【发布时间】:2017-11-15 10:15:23
【问题描述】:
是否可以配置 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} 应该是我想要的。将测试它。
还有其他几种可用的格式。
【问题讨论】:
-
我不确定您的确切要求是什么,但我认为只要您测试异常类名称和消息以及堆栈跟踪项的基本格式就足够了。如果您关心的只是异常已与其跟踪一起记录,我不确定您为什么要比较整个堆栈跟踪。
标签: java log4j2 stack-trace