Syslog
無法讓 rsyslog 僅保存沒有時間戳的 msg
當我有預設設置時,我的日誌是這樣的:
2020-12-01T18:34:06+02:00 10.132.90.194 {"wfd_successful_hits_sec": "0", "sql_hits_sec_max": "0", "timestamp": "2020/12/01 18:34:01", "connection_sec_max": "1922", "http_hits_sec_max": "1106", "http_hits_sec": "106", "wfd_successful_hits_sec_max": "0", "sql_hits_sec": "0", "sql_audit_phase2_events_sec_max": "0", "hdfs_hits_sec": "0", "connection_sec": "26"}
但是一旦我嘗試讓它只寫味精,它就會失敗。
並給我剪掉開頭的味精。
"0", "timestamp": "2020/12/01 18:34:01", "connection_sec_max": "1922", "http_hits_sec_max": "1106", "http_hits_sec": "106", "wfd_successful_hits_sec_max": "0", "sql_hits_sec": "0", "sql_audit_phase2_events_sec_max": "0", "hdfs_hits_sec": "0", "connection_sec": "26"}
我的 Rsyslog 配置:
$template OnlyMsg,"%msg:2:2048%\n" $template CustomLog,"/logs/host-%fromhost%-%$year%-%$month%.log" local5.* ?CustomLog;OnlyMsg
輸入行對於 syslog 並沒有真正標準化,因此例如字元串
{"wfd_successful_hits_sec":
可能被誤認為是標籤,而 msg 欄位在此之後。您可能可以簡單地使用該
rawmsg
屬性而不是msg
,因為它包含整個輸入行(在優先級之後)。嘗試使用大約 40 個字元的起始偏移量來說明時間戳和 IP 地址。如果您有不同長度的 ip 地址,則可以使用正則表達式來匹配開始。