【发布时间】:2019-12-27 08:45:27
【问题描述】:
我们正在将日志从 Text 更改为 JSON。我使用下面的代码来实现 JSON 日志:
LayoutWrappingEncoder layoutEncoder = new LayoutWrappingEncoder();
ch.qos.logback.contrib.json.classic.JsonLayout layout= new ch.qos.logback.contrib.json.classic.JsonLayout();
ch.qos.logback.contrib.jackson.JacksonJsonFormatter jsonFormatter=new ch.qos.logback.contrib.jackson.JacksonJsonFormatter();
jsonFormatter.setPrettyPrint(true);
layout.setJsonFormatter(jsonFormatter);
layout.setTimestampFormat("yyyy-MM-dd' 'HH:mm:ss.SSS");
layoutEncoder.setLayout(layout);
但我看到 JSON 日志没有完全打印出来。
{
"timestamp" : "2019-08-22 10:12:15.790",
"level" : "ERROR",
"thread" : "qtp1346354118-22",
"logger" :"com.SomeClass",
"message" : "Exception from : com.class.method() \n",
"context" : "default",
"exception" : "java.lang.NullPointerException: null\r\n"
}
现在,异常不会与完整的堆栈跟踪一起打印,例如它们如何用于获取文本日志中的日志。我还可以看到新的换行序列被打印出来,这在文本日志中也不会发生。
我尝试探索 JSONLayout 中的一些属性,但没有一个能解决我的问题。
那么我还能在这里尝试什么。
【问题讨论】:
-
layout.setIncludeException(true)?
-
@ei 知道如何处理这些转义序列
标签: java spring-boot log4j logback slf4j