gpt4 book ai didi

java - 如果 FileAppender 失败,恢复到 ConsoleAppender

转载 作者:搜寻专家 更新时间:2023-11-01 02:34:37 26 4
gpt4 key购买 nike

使用 log4j,如果 FileAppender 在写入指定日志文件时出现问题,我想恢复到 ConsoleAppender。这意味着捕获 FileNotFoundException 或 IOException 并切换到 ConsoleAppender。

这是之前完成的还是我必须创建一个新的 appender - 类似于:

private WriterAppender appender;

public FileOrConsoleAppender(Layout layout, String filename, boolean append) {
try {
appender = new FileAppender(layout, filename, append, bufferedIO, bufferSize);
}
catch (IOException e) {
appender = new ConsoleAppender(layout);
}
}

更新 - 我是如何做到的:

感谢@jsight,为我指明了 FallBackErrorHandler。

这是我的 log4j xml 配置,如果 FileAppender 失败,它会恢复为 ConsoleAppender:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">

<!-- A Console appender -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %30.30c - %m%n"/>
</layout>
</appender>

<!-- A File appender, with fallback to Console-->
<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>

<root>
<level value="INFO" />
<appender-ref ref="file" />
</root>

</log4j:configuration>

最佳答案

关于java - 如果 FileAppender 失败,恢复到 ConsoleAppender,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1504929/

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