Логирование с Log4j 2 в Java

Не пугайтесь, я помню, что писал уже про log4j, но я писал про версию 1.2, которая уже устарела. Сейчас уже существует вторая версия, которая добавляет новые возможности. Полную документацию на английском можно найти на официальном сайте. Здесь же я коротко расскажу о настройке и создании простого приложения с помощью этого логера. Имейте в виду, что подход, описанный в этой статье тоже неудачный. Сейчас обычно используют подход с Slf4j и Logback.

В Log4j 2 отдельно выделен интерфейс API и сама реализация, в результате чего мы можем использовать API Log4j 2, но реализацию другого логера. Я, правда, ни разу не видел в реальных проектах, чтобы кто-то так делал.

Итак, давайте создадим простое приложение с Log4j 2 в качестве библиотеки логирования. Для начала создадим новый Maven проект и в зависимости добавим Log4j 2:

Мы подключили API (log4j-api), содержащий интерфейсы и реализацию этих интерфейсов от Log4j2 (log4j-core)

Нам нужно создать файл конфигурации. Log4j два поддерживает файлы Java Properties, XML, JSON, YAML и программную настройку. Мы будем использовать файл XML. Создайте файл “log4j2.xml” (обратите внимание на цифру 2 после log4j, она обязательна) в “src/main/resources” со следующим содержимым:

Здесь мы указываем, что к корневому логеру подключены два Appender-а: STDOUT и rollingFile. Первый пишет в консоль, а второй пишет в файл “logs/log4j2.log”, при этом каждый день создаёт новый файл ( TimeBasedTriggeringPolicy interval = "1"), а также ограничивает размер файла 250 мегабайтами.

В PatternLayout мы указываем формат сообщения:

%d — дата и время

%p — уровень сообщения (DEBUG, WARN, INFO…)

%c{1.} — категория, причём имена пакетов будут сокращаться до первой буквы

%t — название потока

%m — сообщение для лога

%n — перевод строки

Сам код программы будет выглядеть так:

Если мы запусим этот код на исполнение, то в каталог “log” появится файл “log4j2.log” со следующим содержимым:

В тестах мы тоже пишем сообщения в лог, но нам уже не нужно создавать файл лога, достаточно консоли, поэтому мы создаём файл “log2j2-test.xml” в каталоге “src/test/resources”, в котором указываем только Appender, пишущий в консоль:

Сам класс с тестом будет выглядеть, например, так:

Логирование с Log4j 2 в Java: 2 комментария

  1. «Имейте в виду, что подход, описанный в этой статье тоже неудачный» — почему? Удачных подходов не существует в данном случае, чтобы их описать в статье?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *