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

  1. log4j.appender.B1.layout.ConversionPattern является ключом здесь, и вы можете связать его только с одним значением. Итак, если вы напишите так:

    
    Log4j.appender.B1.layout.ConversionPattern=%some%value%here
    Log4j.appender.B1.layout.ConversionPattern=%another%value%here
    
    Более позднее значение просто переопределит предыдущее

  2. Вы можете определить два разных приложения и связать их с нужным вам регистратором (например, 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.

  3. Более подробное обсуждение log4j можно найти Краткое введение в log4j
Другие вопросы по тегам