Как назначить выходное сообщение log4j переменной - PullRequest
0 голосов
/ 16 декабря 2018

Я хочу назначить log4j-сообщение, которое отправляется на консоль, моей переменной, например:

log.info("some info");
String info = // info message from log

как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018
Message message = new SimpleMessage("some info");

PatternLayout layout = PatternLayout.createDefaultLayout();
Log4jLogEvent event = Log4jLogEvent.newBuilder()
                                   .setLevel(Level.INFO)
                                   .setMessage(message)
                                   .build();

String formattedMessage = layout.toSerializable(event);

Процесс формирования точной строки, которую должен распечатать регистратор, довольно утомителен.Вам необходимо программно описать настройки, которые вы обычно пишете в файле конфигурации.Затем вы должны создать событие, которое даст контекст вашим настройкам.

Для простоты я выбрал макет по умолчанию и создал событие с простым сообщением INFO.Но я уверен, что должен быть способ загрузить конфигурацию из внешнего источника.Попробуйте: PatternLayout.createPatternParser(Configuration).

0 голосов
/ 16 декабря 2018

Я не понимаю, для чего, я думаю, что ваше сообщение является более сложной, чем простая строка.Вы можете попробовать реализовать свой собственный Java Appender и зарегистрировать его в Logger.Appender будет работать как прослушиватель сообщений, и вы сможете реализовать некоторую пользовательскую логику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...