相关疑难解决方法(0)

是否存在使用消息参数作为属性创建JSON对象的Logback布局?

我想将日志事件作为带有参数化字符串消息的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对象的自定义序列化?

java json logback slf4j loggly

27
推荐指数
4
解决办法
3万
查看次数

标签 统计

java ×1

json ×1

logback ×1

loggly ×1

slf4j ×1