是否可以配置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}
应该是我想要的。将测试它。
还有其他几种可用的格式。
答案 0 :(得分:0)
我认为不可能。堆栈跟踪来自JVM,log4j只是打印它给出的任何内容。
答案 1 :(得分:0)
为了达到想要的效果,需要更改模式。
例如,如果是
... %msg%n
需要
... %msg%n%ex{full}
(阅读https://logging.apache.org/log4j/2.x/manual/layouts.html#Patterns了解更多信息)