Вывод цветного журнала, без разбора "%highlight{...}{..}" в log4j.properties

Я пытаюсь настроить вывод журнала, используя Log4j и log4j.properties файл, но у меня проблемы с настройкой цветного вывода на основе уровня журнала.

Похоже, что утилиты регистрации просто не анализируют %highlight ... команда преобразования.

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

Я основываю свой текущий код на этом ответе S/O: log4j 2 добавление нескольких цветов в консольный аппендер

Я предполагаю, что это нечто простое, чего я не вижу, так как я довольно новичок в этом. К сожалению, документацию сложно собрать или она предназначена для конфигураций на основе XML.

Спасибо за любую помощь заранее.

Некоторые ресурсы, которые я уже просматривал:

Вот соответствующие файлы / код:

log4j.properties:

log4j.rootLogger=TRACE, STDOUT
log4j.logger.deng=INFO
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=%highlight{%d %-5p [%t] (%F:%L) - %m%n}{FATAL=red, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}

Gradle зависимости:

dependencies {
    // The production code uses the SLF4J logging API at compile time
    compile 'org.slf4j:slf4j-api:1.7.+'
    compile 'org.slf4j:slf4j-log4j12:1.7.+'
    testCompile 'junit:junit:4.12'
}

Тест для проверки журнала:

@Test
public void testLogger(){
    LOGGER.info("Info level log");
    LOGGER.debug("Debug level log");
    LOGGER.warn("Warn level log");
    LOGGER.error("Error level log");
    LOGGER.trace("Trace level log");
}

Выход:

log4j:ERROR Unexpected char [h] at position 2 in conversion patterrn.
%highlight{2017-07-08 13:18:21,243 INFO  [main] (LongLinkedListTest.java:40) - Info level log
}{FATAL=red, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}%highlight{2017-07-08 13:18:21,246 DEBUG [main] (LongLinkedListTest.java:41) - Debug level log
}{FATAL=red, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}%highlight{2017-07-08 13:18:21,246 WARN  [main] (LongLinkedListTest.java:42) - Warn level log
}{FATAL=red, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}%highlight{2017-07-08 13:18:21,246 ERROR [main] (LongLinkedListTest.java:43) - Error level log
}{FATAL=red, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}%highlight{2017-07-08 13:18:21,246 TRACE [main] (LongLinkedListTest.java:44) - Trace level log
}{FATAL=red, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}
Process finished with exit code 0

Окончательные результаты:

Для потомков я получил следующее:

Зависимости Gradle:

dependencies {
    //logging dependencies
    compile 'org.apache.logging.log4j:log4j-slf4j-impl:2.+'
    compile 'org.apache.logging.log4j:log4j-api:2.+'
    compile 'org.apache.logging.log4j:log4j-core:2.+'
    compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2+'
    compile 'com.fasterxml.jackson.core:jackson-databind:2+'

    ...
}

После того, как я обновил зависимости, я смог перейти к конфигурации на основе yaml и использовать %highlight нотация работала как шарм!

Если кто-то хочет увидеть окончательную конфигурацию, ее можно найти здесь: https://github.com/Epic-Breakfast-Productions/OWAT/blob/master/implementations/java/src/main/resources/log4j2.yaml

1 ответ

Решение

Возможно ли, что вы путаете Log4j2 с log4j 1.x? log4j:ERROR ошибка - устаревшее сообщение об ошибке log4j 1.2.

Пожалуйста, упростите вопросы, используя только зависимости Log4j2 и используя конфигурацию Log4j2. Файл конфигурации по умолчанию называется log4j2.xml.

Пожалуйста, удалите org.slf4j:slf4j-log4j12:1.7.+ зависимости и вместо этого используйте log4j-api-2.x, log4j-core-2.x и log4j-slf4j-impl-2.x.

Полезные ссылки:

  1. Какие банки
  2. Консоль appender
  3. PatternLayout с цветами и подсветкой
  4. конфигурация

Log4j 1.2 стал концом жизни летом 2015 года. Давайте обновимся!:-)

Другие вопросы по тегам