【问题标题】:How do I create a new log4j ConsoleAppender in code as opposed to config?如何在代码而不是配置中创建新的 log4j ConsoleAppender?
【发布时间】:2009-09-07 13:43:16
【问题描述】:

我想以编程方式创建一个新的 log4j ConsoleAppender 并将其作为附加程序添加到记录器 - 我如何正确实例化一个 - 使用以下内容似乎让 log4j 抱怨 - 我需要使用哪些设置器来配置它正常吗?

// log4j complains of "No output stream or file set for the appender named [null]."
logger.addAppender(new ConsoleAppender());

大概是知道在 ConsoleAppender 上设置什么的情况,但我无法弄清楚。我假设有一些方法可以获得默认布局。我只想要一个附加到 SysOut 的标准 ConsoleAppender。任何指导表示赞赏,谢谢。

【问题讨论】:

    标签: java log4j


    【解决方案1】:

    您需要在 appender 上设置 Writer(然后还需要设置 Layout 以避免出现下一个错误。)这意味着您不能像您一样使用匿名实例将需要使用 setter 来配置 appender。例如

    ConsoleAppender ca = new ConsoleAppender();
    ca.setWriter(new OutputStreamWriter(System.out));
    ca.setLayout(new PatternLayout("%-5p [%t]: %m%n"));
    logger.addAppender(ca);
    

    此外,您可以使用以下命令设置附加程序的名称:

    ca.setName("My appender");
    

    【讨论】:

      【解决方案2】:

      这似乎是 log4j 中的 known issue。您应该能够通过在将附加程序添加到记录器之前在附加程序上调用activateOptions 或使用ConsoleAppender 的参数化构造函数来解决此问题。

      你用的是什么版本?该错误似乎存在于相当旧的版本中。

      【讨论】:

        猜你喜欢
        • 2011-01-09
        • 1970-01-01
        • 2016-07-03
        • 1970-01-01
        • 2020-12-07
        • 2011-09-18
        • 1970-01-01
        • 1970-01-01
        • 2013-05-28
        相关资源
        最近更新 更多