我想将日志事件作为带有参数化字符串消息的JSON对象发送到Loggly.我们的项目目前有很多代码如下:
String someParameter = "1234";
logger.log("This is a log message with a parameter {}", someParameter);
Run Code Online (Sandbox Code Playgroud)
我们目前正在使用Logback作为我们的SLF4J后端,而Logback的JsonLayout将我们的ILogEvent对象序列化为JSON.因此,当我们将日志事件发送到Loggly时,它们看起来像这样:
{
"message": "This is a log message with a parameter 1234",
"level": INFO,
....
}
Run Code Online (Sandbox Code Playgroud)
虽然这确实有效,但它会message为每个值发送一个不同的字符串someParameter,这使得Loggly的自动过滤器旁边无用.
相反,我想要一个创建如下所示的JSON的布局:
{
"message": "This is a log message with a parameter {}",
"level": INFO,
"parameters": [
"1234"
]
}
Run Code Online (Sandbox Code Playgroud)
这种格式允许Loggly将所有日志事件与消息This is a log message with a parameter组合在一起,而不管其值如何someParameter.
看起来Logstash的KV过滤器做了类似的事情 - 有没有办法用Logback完成这个任务,没有编写我自己的布局来执行ILogEvent对象的自定义序列化?