Rsyslog
rsyslog 即時將 json 轉換為文本
我有 JSON 格式的應用程序記錄事件,用於以後的結構化查詢等。現在我有一個任務以純文字(可能是 CSV)記錄相同的消息,我真的不想以兩種格式記錄每個事件兩次。
是否可以在 rsyslog 中進行轉換?我可以選擇跟踪輸出文件並將其通過管道傳輸到轉換器,然後使用不同的標籤進行記錄,但這似乎不是最理想的。
還有其他想法嗎?
謝謝 !
你可能想看看
mmjsonparse
。它似乎在做你想做的事情。您需要rsyslog
6.6 或更高版本(推薦 7 或更高版本)。此處找到的範例配置很好地解釋了它:# load needed modules module(load="imuxsock") # provides support for local system logging module(load="imklog") # provides kernel logging support module(load="mmjsonparse") #for parsing CEE-enhanced syslog messages # try to parse structured logs action(type="mmjsonparse") # define a template to print field "foo" template(name="justFoo" type="list") { property(name="$!foo") constant(value="\n") #we'll separate logs with a newline } # and now let's write the contents of field "foo" in a file action(type="omfile" template="justFoo" file="/var/log/foo")
您仍然需要使用
logger
與您的應用程序編寫互動的任何語言的模組rsyslog
來編寫消息……# logger '@cee: {"foo":"bar"}' # cat /var/log/foo bar
如果您發送非結構化日誌或無效 JSON,則不會將任何內容添加到日誌中。