如何在代码中创建新的log4j控制台应用程序,而不是配置?

2022-09-03 04:32:56

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

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

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


答案 1

您需要在追加器上设置一个(然后还要设置一个,以避免您看到的下一个错误。这意味着您不能使用匿名实例,因为您需要使用 setter 来配置追加器。例如:WriterLayout

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 中的一个已知问题。您应该能够通过在将追加器添加到记录器之前调用追加器或使用 的参数化构造函数来解决此问题。activateOptionsConsoleAppender

您使用的是哪个版本?该错误似乎存在于一个相当旧的版本中。


推荐