首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ConsoleAppender中将FileAppender替换为FileAppender

在ConsoleAppender中将FileAppender替换为FileAppender
EN

Stack Overflow用户
提问于 2015-01-30 12:31:31
回答 1查看 2.3K关注 0票数 1

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

代码语言:javascript
复制
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一起使用。

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

代码语言:javascript
复制
    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:错误无输出流或文件设置为名为null的附录。

我不确定我遗漏了哪些属性来定义文件附录。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-30 14:59:39

您忘了激活选项:

代码语言:javascript
复制
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()激活以前通过调用选项设置器而设置的选项。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28236007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档