log4j похожий на запись журнал - PullRequest
1 голос
/ 25 мая 2011

Я хочу, чтобы log4j выдавал похожий на запись вывод.

Чего я не хочу:

1    INFO  ... - User login: Agostino
120  INFO  ... - Start process: 0, elements to process 100

Что я хочу:

1    INFO ... - User: Agostino, processid:null, elements: null, message: login
1    INFO ... - User: Agostino, processid:0, elements: 100, message: start process

Я думаю, что мне следует использовать ObjectRenderer, и так как многие данные содержатся в объектах, которые у меня уже есть, я думаю что-то вроде:

public class MyMessage {
    Object myContextObject; //**this** contains user, processid, elements
    String message;
}

То, что я здесь делаю, это передача «объекта контекста», который предоставляет поля ПЛЮС строки сообщения. Затем ObjectRenderer выполнит форматирование на основе типа myContextObject.

Теперь мне интересно, спроектирован ли ObjectRenderer что-то подобное. Если бы это было обычное использование ObjectRenderer, вероятно, они бы предоставили log (String message, Object myContextObject), которые предотвращают создание фиктивной оболочки MyMessage.

1 Ответ

1 голос
/ 26 мая 2011

В качестве альтернативы ObjectRenderer, вы можете заглянуть в log4j's PatternLayout, который можно настроить программно или конфигурационно:

http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

например, вы можете сделать что-то вроде этого (просто произвольный пример):

<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d %-5p (%-35F:%-4L) - %m%n"/>
  </layout>
</appender>

Как только вы установили это, вы можете использовать шаблон %X{clientNumber} для извлечения данных из ваших пользовательских классов через MDC

http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/MDC.html

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