Как создать новый log4j ConsoleAppender в коде вместо конфигурации?
Я хочу программно создать новый log4j ConsoleAppender и добавить его в качестве приложения к журналу - как мне это сделать, чтобы создать экземпляр правильно - использование следующего, кажется, делает log4j жалобой - какие сеттеры мне нужно использовать для его настройки правильно?
// log4j complains of "No output stream or file set for the appender named [null]."
logger.addAppender(new ConsoleAppender());
Предположительно, это тот случай, когда вы знаете, что устанавливать на ConsoleAppender, но я не могу понять это. Я предполагаю, что есть способ получить макет по умолчанию. Мне просто нужен стандартный ConsoleAppender, который присоединяется к SysOut. Любое руководство оценили, спасибо.
Ответы
Ответ 1
Вам нужно будет установить Writer
в appender (а затем также Layout
, чтобы избежать следующей ошибки, которую вы увидите.) Это означает, что вы не можете использовать анонимный экземпляр, Вам нужно будет использовать настройки для настройки приложения. например.
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
Кажется, это известный issue в log4j. Вы должны исправить это, вызвав activateOptions
в приложении, прежде чем добавлять его в журнал или с помощью параметризованного конструктора для ConsoleAppender
.
Какую версию вы используете? Кажется, что ошибка существует в довольно старой версии.