gpt4 book ai didi

java - 在 log4j 中将 ConsoleAppender 替换为 FileAppender

转载 作者:行者123 更新时间:2023-11-29 05:11:33 26 4
gpt4 key购买 nike

我已经使用 ConsoleAppender 在 log4j 记录器上创建了一个记录器。代码如下,

public class AppLogger{ 

static {
ConsoleAppender ca = new ConsoleAppender(new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN));
org.apache.log4j.Logger.getRootLogger().addAppender(ca);
}
public AppLogger(Class classname) {
logger = LoggerFactory.getLogger(classname);
}

public void debug(String message){
logger.debug(message);
}
...
...
}

我没有使用 log4j.properties 文件,因为我不确定该把它放在哪里。上面的代码工作正常并在控制台上正确记录。现在我想将其更改为与 FileAppender 一起使用。

我简单地更新了静态构造函数如下,

    FileAppender fa = new FileAppender();
fa.setFile("d:/log.txt");
fa.setLayout(new PatternLayout(PatternLayout.DEFAULT_CONVERSION_PATTERN));
org.apache.log4j.Logger.getRootLogger().addAppender(fa);

并添加了 fa 代替 ca。但是现在我收到了这个错误,

log4j:ERROR No output stream or file set for the appender named [null].

我不确定我缺少从 File Appender 定义的属性。

最佳答案

您忘记激活选项:

FileAppender fa = new FileAppender();
fa.setFile("d:/log.txt");
fa.setLayout(new PatternLayout(PatternLayout.DEFAULT_CONVERSION_PATTERN));
fa.activateOptions(); \\ ← activate the options
org.apache.log4j.Logger.getRootLogger().addAppender(fa);

方法OptionHandler#activateOptions()激活之前通过调用选项 setter 设置的选项。

关于java - 在 log4j 中将 ConsoleAppender 替换为 FileAppender,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28236007/

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