Log4j2 SmtpAppender 包含没有堆栈跟踪源代码位置的异常

Log4j2 SmtpAppender to include exceptions without the stack trace source code location

我们有一个 SmtpAppender 配置了自定义 RateLimiter 过滤器和 ERROR 日志级别,除异常格式外,一切都按预期工作,它们包括源代码位置我们想删除它,我们在日志记录工具初始化后以编程方式将这样的附加程序添加到每个记录器,日志示例:

2019-05-03 10:39:58,871        Thread-9 ERROR s.utils.Startup - Testing error
java.lang.RuntimeException: Testing error
    at com.somepackage.SomeClass.lambda$enableEmailLogging[=10=](Startup.java:619) ~[classes/:?]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_212]

~[classes/:?][?:1.8.0_212] 也让我们很烦;一般来说,我们希望我们的日志记录始终包含异常,这在我们的 RollingRandomAccessFile appender 中也很好地完成了,但是在包含堆栈跟踪源代码位置方面存在同样的问题,这也是我们滚动文件的一个片段附加程序:

<Appenders>
   <RollingRandomAccessFile name="RollingFile" fileName="/opt/tomcat/logs/some-webapp.log"
                                 filePattern="/opt/tomcat/logs/some-webapp.log-%d{yyMMdd-HH}"
                                 ignoreExceptions="false">
       <PatternLayout>
           <Pattern>%d{DEFAULT} %15.15t %-5p %15.15c - %m%n</Pattern>
       </PatternLayout>
       <Policies>
           <TimeBasedTriggeringPolicy/>
       </Policies>
   </RollingRandomAccessFile>
</Appenders>

我到处寻找一种方法来完成这个,但运气不好。

正在更改 PatternLayout 的模式:

%d{DEFAULT} %15.15t %-5p %15.15c - %m%n

%d{DEFAULT} %15.15t %-5p %15.15c - %m%n%throwable

并从附加程序中删除选项 ignoreExceptions 似乎完成了我想要的。