通过log4j将printStackTrace()发送到文件而不捕获异常

时间:2015-11-27 16:51:56

标签: java tomcat exception logging log4j

我有一个由log4j配置的自定义日志文件,如下所示:

<appender name="ARQUIVO" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="${catalina.base}/logs/docnix.log" />
    <param name="DatePattern" value="'.'yyyy-MM-dd" />
    <param name="ImmediateFlush" value="true" />
    <param name="Append" value="true" />
    <param name="Encodig" value="UTF-8" />
    <param name="Threshold" value="DEBUG" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern"
               value="[docnix] %d{dd/MM/yyyy HH:mm:ss} %-5p %c{1}:%L - %m%n" />
    </layout>

(更多日志配置)     

但是,由于它的大型应用程序并不总是能够捕获可能抛出nullPointerException的代码,并且当发生这种情况时,stackTrace会转到tomcat的日志文件tomcat7-stderr(例如),有没有办法重定向所有我的docnix.log有例外吗?没有做很多try / catch块来使用log4j记录器?

我已经用swallowOutPut搞砸了尝试将stderr和stdout输出重定向到我的文件但是到目前为止没有运气。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以将Tomcat配置为使用log4j,请参阅https://tomcat.apache.org/tomcat-8.0-doc/logging.html#Using_Log4j