当前位置: 首页 > 知识库问答 >
问题:

将ConsoleAppender替换为log4j中的FileAppender

邹时铭
2023-03-14

我已经用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);

添加ca中的fa。但现在我得到了这个错误,

LOG4J:错误,未为名为[null]的追加器设置输出流或文件。

我不确定我缺少哪个属性来定义文件追加器。

共有1个答案

石正奇
2023-03-14

您忘记激活选项:

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()激活以前通过调用选项设置器设置的选项。

 类似资料:
  • 也许可以在某个配置文件中完成。有人已经做过了吗?

  • 问题内容: 所以我似乎无法弄清楚…我有一句话要说,我希望它成为。我已经尝试了以下所有方法,但似乎都没有效果; 我真的不明白为什么最后一个有效,因为这样可以正常工作: 我在这里想念什么吗? 编辑 我知道\是转义字符。我要在这里执行的操作是将所有内容都 转换为其他内容, 并且替换似乎没有按照我的预期进行。 我希望字符串a看起来像字符串b。但是替换并不能像我想的那样替换斜线。 问题答案: 无需为此使用r

  • 问题内容: 我正在用Python解析文件中的文本。我必须替换所有换行符(\ n), 因为此文本将生成html-content。例如,这是文件中的一些行: 现在我做: 而且我仍然看到带有换行符的文本。 问题答案: 只是踢,你也可以 用替换字符串中的所有换行符。

  • 如果满足条件,我们如何替换日志字符串中的某些字符,有什么想法吗?

  • 我得到了一个导入的文本块,但格式并不总是那么完美。之后我会尝试用jquery解决这个问题。所以我开始用 替换 : null null 但替换不起作用。最终的html应该如下所示:

  • 我是log4j的新手。我正在将一个应用程序从log4j1.2转换为log4j2。在log4j中。我发现的属性文件有以下配置。 如何将此配置转换为log4j2配置? 谢谢