gpt4 book ai didi

java - Log4j同步我想捕获log4j :ERROR setFile(null, true)调用失败

转载 作者:太空宇宙 更新时间:2023-11-04 12:02:17 24 4
gpt4 key购买 nike

我想将日志信息发送到“审核”文件。我考虑过将 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;
}

最佳答案

您可以通过调用强制 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。

关于java - Log4j同步我想捕获log4j :ERROR setFile(null, true)调用失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40786185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com