我们使用Log4j (和通用日志记录)来记录错误消息。现在,我们想要设置一个额外的日志附加器,它将致命错误输出到syslog,但是没有超长的Java堆栈跟踪(这些堆栈跟踪在完整的日志文件中仍然可用)。
如何配置(使用log4j.xml)?是否有可用的过滤器来忽略堆栈跟踪?
发布于 2008-12-08 03:32:25
在阅读更多源代码后进行编辑:
您仍然需要继承Throwable的子类,但是您想要覆盖的方法是ignoresThrowable():它应该返回false,这将阻止附加器编写Throwable(它假设布局已经这样做了)。
没有办法在配置中指定这一点: PatternLayout有一个硬编码的"return true“。
发布于 2009-11-24 16:58:34
下面是我实际使用的代码:
import org.apache.log4j.PatternLayout;
public class NoStackTracePatterLayout extends PatternLayout {
@Override
public boolean ignoresThrowable(){
return false;
}
}发布于 2015-03-26 01:02:39
如果使用log4j > 1.2.16,则可以使用EnhancedPatternLayout布局。
示例(使用log4j.properties文件),将其定义为附加器的布局,然后在转换模式中添加%throwable{0}:
log4j.appender.XXX.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.XXX.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c:%L - %m%n%throwable{0}https://stackoverflow.com/questions/348582
复制相似问题