![如何将输出记录到邮件日志?](https://linux22.com/image/44619/%E5%A6%82%E4%BD%95%E5%B0%86%E8%BE%93%E5%87%BA%E8%AE%B0%E5%BD%95%E5%88%B0%E9%82%AE%E4%BB%B6%E6%97%A5%E5%BF%97%EF%BC%9F.png)
在我当前的 Debian 设置中,我有一个文件 /var/log/mail.log,Dovecot、Postfix 和 Spamassassin 的 spamd 所有消息都输出到该文件中。我知道该logger
命令可以输出到 syslog,但是是否有一些命令可以轻松地让我从 bash 脚本输出到邮件日志,或者我是否必须手动打开它并附加到它?
答案1
原来我正在记录的东西logger
是还无论如何都被注销到我的/var/log/mail.log
文件中。我认为这是因为(无论如何在 Debian 上)默认日志配置/etc/rsyslog.conf
将邮件“设施”的默认日志定义为 mail.log 文件,而我的脚本确实记录到了邮件“设施”。这似乎使logger
日志同时记录到 mail.log 和 syslog。
答案2
在 bash 上下文中“手动打开并追加”非常简单:
mycommand >> /var/log/mail.log
标准输出从mycommand
转到文件。如果将其放在脚本的开头:
exec 1>&2&>> /var/log/mail.log
脚本其余部分中所有内容的标准输出 (1) 和错误 (2) 将附加到文件中。
如果您想最初截断文件(即不附加到预先存在的内容),请使用>
而不是>>
.