メールログに出力を記録するにはどうすればよいですか?

メールログに出力を記録するにはどうすればよいですか?

現在のDebian設定には、Dovecot、Postfix、およびSpamassassin用のspamdがすべてのメッセージを出力する/var/log/mail.logファイルがあります。このコマンドはsyslogに出力できることを知っていますが、loggerbashスクリプトからメールログに簡単に出力できるコマンドはありますか?それとも手動で開き、追加する必要がありますか?

答え1

私が録音した内容は次のとおりですlogger返品とにかく私のファイルにはログアウトされています/var/log/mail.log。私はこれが(とにかくDebianで)デフォルトのログ設定がメールの/etc/rsyslog.conf「facility」のデフォルトログをmail.logファイルとして定義するのに対して、私のスクリプトはメール「facility」にログを書き込むからだと思います。これはloggermail.logとsyslogの両方にロギングを引き起こすようです。

答え2

Bash コンテキストでは、「手動で開くと追加」は非常に簡単です。

mycommand >> /var/log/mail.log

標準出力はmycommandファイルからファイルに移動します。スクリプトの先頭にこれを置くと:

exec 1>&2&>> /var/log/mail.log

スクリプトの残りの部分にあるすべてのエントリの標準出力(1)とエラー(2)がファイルに追加されます。

最初にファイルを切り捨てる(つまり、既存のコンテンツに追加しない)>代わりに>>

関連情報