本文共 961 字,大约阅读时间需要 3 分钟。
我的日志被提取,管道并合并到elasticsearch中.多线事件很难跟踪和诊断.
而不是使用收集器和正则表达式来组合单个记录中的异常行,有没有办法让logback configuration在一行上具有异常堆栈跟踪?
解决方法:
您可以在logback.xml中为%ex符号声明转换规则,如下所示:
...
然后像这样声明CompressedStackTraceConverter:
import ch.qos.logback.classic.pattern.ThrowableProxyConverter;
import ch.qos.logback.classic.spi.IThrowableProxy;
public class CompressedStackTraceConverter extends ThrowableProxyConverter {
@Override
protected String throwableProxyToString(IThrowableProxy tp) {
String original = super.throwableProxyToString(tp);
// replace the new line characters with something,
// use your own replacement value here
return original.replaceAll("\n", " ~~ ");
}
}
只要您的日志记录模式包含%ex符号,此custom conversion specifier就可以正常工作.例如,这样的模式:
%d{yyyy-MM-dd HH:mm:ss}|%-5level|%logger{36}|%msg %ex %n
如果您的模式不包含%ex符号,那么堆栈跟踪是%msg的一部分,在这种情况下,您将声明转换规则,如下所示…
…虽然这会产生将CompressedStackTraceConverter应用于整个日志消息的效果,而不仅仅是它的堆栈跟踪部分.
标签:java,slf4j,logback,logging
来源: https://codeday.me/bug/20190527/1162840.html
转载地址:https://blog.csdn.net/weixin_33073525/article/details/114931840 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!