rsyslogのタイムスタンプのフォーマット変更 [Linux]
rsyslog のデフォルト設定では、タイムスタンプに年が出力されない。
不便を感じることが度々あるため、年(西暦 4桁)が出力されるように設定の変更を行った。
[ソフトウェアのバージョン]
・rsyslog 8.1901.0-1 (on Debian 10)
・rsyslog-8.24.0-52.el7_8.2.x86_64 (on CentOS 7)
1. 対応方法
2. 実施手順
3. 備考
(注1)
複数行として表示しているが、設定は一行で行う(単純に行を連結する)こと。
不便を感じることが度々あるため、年(西暦 4桁)が出力されるように設定の変更を行った。
[ソフトウェアのバージョン]
・rsyslog 8.1901.0-1 (on Debian 10)
・rsyslog-8.24.0-52.el7_8.2.x86_64 (on CentOS 7)
1. 対応方法
/etc/rsyslog.conf にテンプレートの定義を追加し、これを使用する。
尚、タイムスタンプは、下記のように変更する。
(変更前) Jan 2 11:22:33 (変更後) 2020-01-02 11:22:33
2. 実施手順
(1) テンプレートの定義
下記のテンプレートを定義する(注1)。
$template custom_timestamp,"%timestamp::10:date-rfc3339% %timestamp:12:19:date-rfc3339% %hostname% %syslogtag% %msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
・%msg:::drop-last-lf%
メッセージの最初の文字がスペースでない場合に、スペースを返す。
・%msg:::sp-if-no-1st-sp%
メッセージを取得し、最後の改行を取り除く。
(2) デフォルト・テンプレートの変更
(変更前) $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat (変更後) $ActionFileDefaultTemplate custom_timestamp
(3) rsyslog の再起動
# systemctl restart rsyslog
3. 備考
(1) $ActionFileDefaultTemplate の代表的な設定値
(a) RSYSLOG_TraditionalFileFormat
・デフォルトの設定値である。
・タイプスタンプに年が含まれない。
(例) Jan 2 11:22:33
・フォーマットは、下記の通り(注1)。
"%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp% %msg:::drop-last-lf%\n"
(b) RSYSLOG_FileFormat
・高精度のタイプスタンプとタイムゾーン情報が含まれる。
(例) 2020-01-02T11:22:33.123456+09:00
・フォーマットは、下記の通り(注1)。
"%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag% %msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
(注1)
複数行として表示しているが、設定は一行で行う(単純に行を連結する)こと。