簡體   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