我想将日志信息发送到“审核”文件。我曾考虑过将log4j与独占的Appender一起使用:
LOGGER_AUDIT.info("Text of audit");
我想确保它是同步编写的。如果发生异常,例如:
og4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: D:audit.log (Access denied)
...
我想抓住它并停止执行。
这将是这样的:
try {
LOGGER_AUDIT.info("Text of audit");
} catch(LoggerException logExc) {
// TODO Ops... the logger do not write.
throw logExc;
}
答案 0 :(得分:0)
您可以通过调用:
强制执行log4j配置处理BasicConfigurator.resetConfiguration();
DOMConfigurator.configureAndWatch( log4jConfigPath );
要捕获异常,您可以使用ErrorHandler功能。 https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/spi/ErrorHandler.html
这是如何配置的:
<appender name="file" class="org.apache.log4j.DailyRollingFileAppender">
<errorHandler class="org.apache.log4j.varia.FallbackErrorHandler">
<root-ref/>
<appender-ref ref="console"/>
</errorHandler>
<param name="File" value="C:/temp/test.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %30.30c - %m%n"/>
</layout>
</appender>
您可以使用自己的ErrorHandler而不是FallbackErrorHandler。默认使用OnlyOnceErrorHandler。它将异常打印到STDERR。