Эквивалент log4j.appender.console.target в файле свойств конфигурации java.util.logging - PullRequest
0 голосов
/ 08 июня 2019

Ищем log4j.appender.console.target эквивалент в java.util.logging фреймворке в файле настроек конфигурации (без использования кода).

У меня есть более тысячи классов Java. Почти все они имеют свой собственный экземпляр Logger что-то вроде:

import java.util.logging.Logger;
Logger logger = Logger.getLogger(MyClass.class.getName());

Моя проблема в том, что регистратор печатает все сообщения журнала в System.err потоке. Но я хочу, чтобы это было напечатано на System.out.

Я знаю, что могу добавить обработчик, как показано ниже, чтобы использовать другой поток.

logger.addHandler(new StreamHandler(System.out, new SimpleFormatter()))

Но мне нужно изменить несколько классов Java. что я не хочу делать.

Как создать java.uitl.logging framework для печати сообщений журнала в System.out stream для всех классов?

Я ищу параметр конфигурации в файле свойств, который одинаков для всех классов.

Как и в случае с log4j, у нас есть файл log4j.properties, в котором я могу установить log4j.appender.console.target=System.out, который сообщает всем регистраторам log4j для печати сообщений журнала на System.out. Я хочу, чтобы то же самое было сделано и с java.util.logging framework.

1 Ответ

0 голосов
/ 10 июня 2019

Как я могу создать инфраструктуру java.uitl.logging для печати сообщений журнала в поток System.out для всех классов?

В java нет эквивалента ConsoleHandler target.util.logging.Тема направления вывода ConsoleHandler в System.out рассматривается в другом вопросе SO .Большинство ваших опций перечислены в этом вопросе.

ConsoleHandler сделает снимок System.err во время построения.Один из вариантов - заменить глобальный поток ошибок глобальным выходным потоком.После того как все объекты ConsoleHandler созданы, вы можете поменять глобальные потоки обратно в правильное местоположение.

...