我有JSON格式的应用程序日志logging事件,以便后来的结构化查询等现在我有一个任务logging在纯文本(CSV可能)相同的消息,我真的不想logging每个事件两次格式。
有可能在rsyslog内转换吗? 我有一个跟踪输出文件和pipe道到转换器,然后用不同的标签日志的选项,但这似乎是不理想的。
任何其他的想法?
谢谢 !
你可能想看看mmjsonparse 。 它似乎做你想做的事情。 你需要rsyslog 6.6或更高(推荐7或更高)。 在这里find的示例configuration解释得非常好:
# 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,则不会向日志添加任何内容。