syslogメッセージを/var/log/messagesおよび/var/log/syslogにコピーしないでください。

syslogメッセージを/var/log/messagesおよび/var/log/syslogにコピーしないでください。

次のrsyslog構成ファイルを使用して、プログラムログを特定のファイルにリダイレクトします。

# Name of the program
set $.program_name = "myapp";

# Path to the log file
set $.logfile_path = "/var/log/myapp.log";

# Templates 
$template log_file, "%$.logfile_path%"
$template datetime_message, "[%timestamp:::date-year%-%timestamp:::date-month%-%timestamp:::date-day%_%timestamp:::date-hour%_%timestamp:::date-minute%_%timestamp:::date-second%.%timestamp:0:3:date-subseconds%]%msg%\n"

# Program log redirection
if( ($programname == $.program_name)) then
{
    ?log_file;datetime_message
}

利用可能な記憶領域が多くなく、プログラムでログが多く生成されるため、logrotateを使用して定期的にファイルを回転させて圧縮した後、記憶容量が大きいサーバーに転送するため、マウントされたパーティションは決して飽和しません/var

/var/log/messagesログがファイルにリダイレクトされても、ログが送信されていることに/var/log/syslog気づくまではうまくいきました/var/log/user.log

その結果、ログは4つの異なるファイルにコピーされ、そのうち3つは定期的に循環されず、パーティションは非常に迅速に飽和しました。

ログの送信方法を検索しましたが、/var/log/myapp.log何も見つかりませんでした。また、変更を避けている特定/etc/rsyslog.conf のrsyslog設定ファイルのみを修正したいと思います/etc/rsyslog.d/99-myapp.conf

myappすべてのログが他のファイルにのみ送信され、他のファイル/var/log/myapp.logには送信されないことをsyslogにどのように通知できますか?

ベストアンサー1

メッセージを選択してそれに対処したら、stop次のタスクを追加してメッセージの追加処理を停止できます。

if( ($programname == $.program_name)) then
{
    ?log_file;datetime_message
    stop
}

デフォルトの構成ファイルに含まれている場合は、 $IncludeConfig /etc/rsyslog.d/*.confファイルでこれを行うことができます(例:今後通常の状況でのその他の作業。 「廃棄」という言葉を探す文書

おすすめ記事