繁体   English   中英

如何在代码中创建新的log4j ConsoleAppender而不是config?

[英]How do I create a new log4j ConsoleAppender in code as opposed to config?

我想以编程方式创建一个新的log4j ConsoleAppender并将其作为一个appender添加到记录器 - 我如何正确实例化 - 使用以下似乎使log4j抱怨 - 我需要使用什么setter来正确配置它?

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

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

你需要在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);

此外,您可以使用以下命令设置appender的名称:

ca.setName("My appender");

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

你用的是什么版本? 这个bug似乎存在于一个相当旧的版本中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM