Log4j несколько шаблонов макета
Я довольно новый с log4j. Я хочу отображать сообщения журнала с такой информацией: отметка времени журнала, приоритет, полное имя класса, сообщение, только имя класса. Я пытаюсь отобразить дважды CATEGORY, один раз с ConversionPattern, и один раз с другим ConversionPattern. Вот часть моего log4j.properties:
log4j.appender.JDBC2.layoutPartsDelimiter=#-#
log4j.appender.B1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n #-#%-4r [%t] %-5p %c{1} %x %m%n
К сожалению, это не работает. Как я могу показать полное имя класса и имя класса только в одном сообщении журнала? ТИА.
Francesco
2 ответа
Это была моя ошибка. Как вы можете видеть в моем предыдущем сообщении, Delimiter и PatternLayout относятся к разным дополнениям. я меняю
log4j.appender.JDBC2.layoutPartsDelimiter=#-#
log4j.appender.B1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n #-#%-4r [%t] %-5p %c{1} %x %m%n
в это:
log4j.appender.B1.layoutPartsDelimiter=#-#
log4j.appender.B1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n #-#%-4r [%t] %-5p %c{1} %x %m%n
и все работает нормально, когда я использую @LAYOUT:1@ я получил первый ConversionPattern (слева от разделителя #-#). Когда я использую @LAYOUT:2@, я получил второй шаблон. Спасибо.
Francesco
log4j.appender.B1.layout.ConversionPattern является ключом здесь, и вы можете связать его только с одним значением. Итак, если вы напишите так:
Более позднее значение просто переопределит предыдущееLog4j.appender.B1.layout.ConversionPattern=%some%value%here Log4j.appender.B1.layout.ConversionPattern=%another%value%here
Вы можете определить два разных приложения и связать их с нужным вам регистратором (например, rootLogger):
log4j.rootLogger=debug,console,console2 log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.target=System.err log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern= %p %C (%F:%M(%L)) - %m%n log4j.appender.console2=org.apache.log4j.ConsoleAppender log4j.appender.console2.target=System.err log4j.appender.console2.layout=org.apache.log4j.PatternLayout log4j.appender.console2.layout.ConversionPattern= %p %c{1} (%F:%M(%L)) - %m%n
Примечание: единственное различие между этими двумя приложениями - это имя приложения и свойство ConversionPattern.
- Более подробное обсуждение log4j можно найти Краткое введение в log4j