log4j2修改stacktrace格式

时间:2017-11-15 10:15:23

标签: java log4j2 stack-trace

是否可以配置log4j2,使堆栈跟踪不显示源,也可能不显示行号?
如果你想知道我为什么会这样,我需要这个单元测试,需要测试是否正确记录异常。因此,例如,如果JRE版本与我复制原始堆栈跟踪的版本不同,则测试失败。因此,如果源代码不包含在堆栈跟踪中,那么它将是更多版本的独立版本。

示例:

目前,堆栈跟踪中的一行如下所示:

    at java.lang.Object.wait(Object.java:502) ~[?:1.8.0_144]

我希望它看起来像这样(但仅适用于log4j2):

    at java.lang.Object.wait(Object.java:502)

也许就是这样:

    at java.lang.Object.wait(Object.java)

甚至更短:

    at java.lang.Object.wait

(任何缩短版本都是可以接受的。目前只有来源(例如~[?:1.8.0_144] vs ~[?:1.8.0_151])不同。)

更新

我刚刚在官方文档中发现了这一点:https://logging.apache.org/log4j/2.x/manual/layouts.html#Patterns我认为使用%ex{full}应该是我想要的。将测试它。

还有其他几种可用的格式。

2 个答案:

答案 0 :(得分:0)

我认为不可能。堆栈跟踪来自JVM,log4j只是打印它给出的任何内容。

答案 1 :(得分:0)

为了达到想要的效果,需要更改模式。

例如,如果是

... %msg%n

需要

... %msg%n%ex{full}

(阅读https://logging.apache.org/log4j/2.x/manual/layouts.html#Patterns了解更多信息)