rsyslog.conf にログフォーマットを追加したい大会
2022-04-06 15:06:21 foobarbaz(172.16.0.50) INFO<6> UNKO_APP[28204] うんこー!
とりあえずこんな感じにするには
# /etc/rsyslog.d/hoge.conf # ログファイル名テンプレート $template HOGE_LOGNAME, "/var/log/hoge/%fromhost-ip%.log" # ログフォーマットテンプレート $template HOGE_FORMAT, "%TIMESTAMP:1:10:date-rfc3339% %TIMESTAMP:12:19:date-rfc3339% %hostname%(%fromhost-ip%) %syslogseverity-text:::uppercase%<%syslogseverity%> %syslogtag% %msg%\n" :fromhost-ip, startswith, "172.16." -?HOGE_LOGNAME;HOGE_FORMAT & stop
こう
変数名 | 説明 | 電文との対応 |
---|---|---|
msg | 本文 | うんこー! |
hostname | 電文中のホスト名 | foobarbaz |
FROMHOST | 送信元ホスト名 | |
fromhost-ip | 送信元IPアドレス | ※マニュアルに載ってない |
syslogtag | 電文中のアプリ名+PID | UNKO_APP[28204] |
programname | 電文中のアプリ名 | UNKO_APP |
PRI | 電文中のプライオリティ | 134 |
PRI-text | 電文中のプライオリティ のテキスト |
local0.info<134> |
syslogfacility | ファシリティ | 16 |
syslogfacility-text | ファシリティのテキスト | local0 |
syslogseverity | 重大度 | 6 |
syslogseverity-text | 重大度のテキスト | info |
timegenerated | ログ受信日時 | |
timereported | 電文中の日時 | Apr 6 15:06:21 |
TIMESTAMP | 電文中の日時(エイリアス) | 同上 |
STRUCTURED-DATA | 構造化データ | [unko] |
APP-NAME | 電文中のアプリ名 | UNKO_APP |
PROCID | 電文中のPID | 28204 |
MSGID | 電文中のMSGID | 3061 |
変数のオプションと文字列操作
TIMESTAMP
%TIMESTAMP:::date-rfc3339%で、TIMESTAMPをRFC3339形式で表示。
YYYY-MM-DDThh:mm:ss.xxx+09:00 みたいなやつ
%TIMESTAMP:1:10:date-rfc3339%で、1文字目から10文字目まで(YYYY-MM-DD部分)を取得
%TIMESTAMP:12:19:date-rfc3339%で、12文字目から19文字目まで(hh:mm:ss)を取得
送信元がミリ秒も含めて送信しているときは、12文字目から23文字目までで(hh:mm:ss.xxx)も取得できるけど、ミリ秒が無いときはおかしくなるので注意する
重大度
%syslogseverity-text:::uppercase% で大文字にする(infoをINFOに)
参考: