是否可以以这样的方式配置log4j2,即堆栈不显示源代码,也可能不显示行号
如果你想知道我为什么要这样做,我需要这个用于单元测试,需要测试异常是否被正确记录。因此,例如,如果JRE版本与我从测试中复制的原始stacktrace版本不同,那么测试就会失败。因此,如果源代码没有包含在stacktrace中,那么它将是一个更加独立的版本。
示例:
目前堆栈中的一行如下:
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]
和~[?:1.8.0_151]
)不同。)
更新:
我刚刚在官方文档中发现了这一点:https://logging.apache.org/log4j/2.x/manual/layouts.html#Patterns我认为使用%ex{full}
应该是我想要的。将测试它。
还有其他几种可用的格式。
为了达到想要的效果,需要改变模式。
例如,如果是
... %msg%n
它需要
... %msg%n%ex{full}
(阅读https://logging.apache.org/log4j/2.x/manual/layouts.html#Patterns了解更多信息)
我认为这是不可能的。stacktrace来自JVM,log4j只打印给定的内容。