在屏幕上打印消息并同时发送到syslog

Mac*_*ers 5 linux bash logging syslog echo

我正在尝试-s在我的脚本中实现(即静默)选项 - 当给出错误/信息等时,将发送到syslog,否则在屏幕上打印并同时发送到syslog.这就是我正在做的事情:

echo -e "This Is a Test Message\nWell, not really!!"  2>&1 | logger
Run Code Online (Sandbox Code Playgroud)

echo消息发送到syslog(不在屏幕上打印),但不能只是弄清楚如何同时做两者.我看到人们只谈论在屏幕上打印时记录syslog或发送日志到不同的文件,而不是我正在尝试处理的情况.任何帮助或指针将不胜感激.干杯!!

kon*_*box 4

如果您想将消息发送到 syslog 和 stdout(而不是 stderr),您也可以这样做:

echo -e "This Is a Test Message\nWell, not really!!" | tee >(exec logger)
Run Code Online (Sandbox Code Playgroud)

以及有效的方法(如果您正在创建一个函数):

exec 40> >(exec logger)

function log {
    echo -e "$1"
    echo -e "$1" >&40
}

log "something..."

exec 40>&-  ## optionally close it at the end of the script.
Run Code Online (Sandbox Code Playgroud)

这将使您的脚本免于每次执行回显时调用外部二进制记录器。