syslogイベントを導入するときにログを毎月、毎日、毎時のフォルダに分割する方法は?

syslogイベントを導入するときにログを毎月、毎日、毎時のフォルダに分割する方法は?

rsyslogを介してログファイルを紹介し、設定は次のとおりです。

root@rhel:/etc/rsyslog.d# head mail_prod_logs.conf
if $fromhost-ip=="10.10.10.10" and $programname=="AMP_Logs" then -/var/log/mail_logs/amp.log

私のログはすべて次のフォルダに保存されます/var/log/mail_logs/amp.log

Oct 18 13:29:28 server.com AMP_Logs: Info: Begin Logfile
Oct 18 14:29:28 server.com AMP_Logs: Info: Version: 12.1.0-000 SN: .....
Oct 18 14:29:28 server.com AMP_Logs: Info: Time offset from UTC: -14400 seconds
Oct 18 15:29:23 server.com AMP_Logs: Info: Response received for.....
Oct 18 15:29:23 server.com AMP_Logs: Info: File reputation query.....
Oct 19 13:29:23 server.com AMP_Logs: Info: Response received for fil....
Oct 19 13:29:58 server.com AMP_Logs: Info: File reputation query ....
Oct 19 13:29:58 server.com AMP_Logs: Info: File reputation query ....

datetimeログの一部を使用してmail_prod_logs.conf

だからそれは次のようになります:

/var/log/mail_logs/Sep/30/23.log
/var/log/mail_logs/Oct/01/00.log
/var/log/mail_logs/Oct/01/01.log
/var/log/mail_logs/Oct/01/02.log
...

どうすればいいですか?

ベストアンサー1

動的ファイルテンプレートを使用してこれを行うことができます。使う属性チェンジャー%timestamp%属性部分、特にオプションdate-daydate-hour文字1〜3 date-rfc3164(「Oct 9 09:47:08」に似た文字列)を選択します。通常、例ではテンプレートを次のように呼び出しますDynFile

$template DynFile,"/var/log/mail_logs/%timestamp:1:3:date-rfc3164%/%timestamp:::date-day%/%timestamp:::date-hour%.log"

テンプレートを使用するには、...then -/var/log/mail_logs/amp.log次のように置き換えます。...then -?DynFile

より簡単な処理のために、文字の3ヶ月(1月、2月...)を2桁の月に変更することを検討している場合は、代わりに使用してください。

$template DynFile,"/var/log/mail_logs/%timestamp:::date-month%/%timestamp:::date-day%/%timestamp:::date-hour%.log

おすすめ記事