Перейти к основному содержимому

Печать информации о потоке в файле журнала с использованием Log4j2

· 3 мин. чтения

1. Обзор

Этот туториал покажет идею и примеры логирования информации о треде с помощью библиотеки Log4j2 .

2. Логирование и потоки

Журналы являются мощным инструментом для предоставления контекста о том, что происходило в системе, когда возникала какая-либо ошибка или поток . Ведение журнала помогает нам собирать и сохранять релевантную информацию для анализа в любое время.

Потоки позволяют нашему приложению выполнять несколько задач одновременно , чтобы обрабатывать больше запросов и повышать эффективность нашей работы.

Многие Java-приложения используют ведение журнала и потоки для управления своим процессом в этом сценарии. Однако, поскольку журналы обычно сосредоточены на конкретном файле, журналы путаются из разных потоков, и пользователь не может определить и понять последовательность событий. Мы будем использовать одну из самых популярных сред ведения журналов Java, Log4j2, чтобы показать соответствующую информацию о нашем потоке для решения этой проблемы.

3. Использование Log4j2

Вперед, у нас есть пример использования некоторых параметров в Log4j2 для отображения информации о нашем потоке:

<Property name="LOG_PATTERN"> %d{yyyy-MM-dd HH:mm:ss.SSS} --- thread_id="%tid" thread_name="%tn" thread_priority="%tp" --- [%p] %m%n </Property>

Log4j2 использует параметры в своем шаблоне для ссылки на данные. Все параметры начинаются с % в начале. Вот несколько примеров параметров потока:

  • tid : Идентификатор потока — положительное длинное число, сгенерированное при создании потока.
  • tn : это последовательность символов, которая называет поток.
  • tp : приоритет потока — это целое число от 1 до 10, где более значащие числа означают более высокий приоритет.

Во- первых, как следует, мы добавляем информацию об идентификаторе, имени и приоритете нашего потока . Поэтому, чтобы визуализировать это, нам нужно создать простое приложение, которое создает новые потоки и регистрирует некоторую информацию:

public class Log4j2ThreadInfo{
private static final Logger logger = LogManager.getLogger(Log4j2ThreadInfo.class);

public static void main(String[] args) {
IntStream.range(0, 5).forEach(i -> {
Runnable runnable = () -> logger.info("Logging info");
Thread thread = new Thread(runnable);
thread.start();
});
}
}

Другими словами, мы просто запускаем forEach в диапазоне от 0 до 5 с помощью Java Streams , а затем запускаем новый поток с некоторым логированием. В результате у нас будет:

2022-01-14 23:44:56.893 --- thread_id="22" thread_name="Thread-2" thread_priority="5" --- [INFO] Logging info
2022-01-14 23:44:56.893 --- thread_id="21" thread_name="Thread-1" thread_priority="5" --- [INFO] Logging info
2022-01-14 23:44:56.893 --- thread_id="20" thread_name="Thread-0" thread_priority="5" --- [INFO] Logging info
2022-01-14 23:44:56.893 --- thread_id="24" thread_name="Thread-4" thread_priority="5" --- [INFO] Logging info
2022-01-14 23:44:56.893 --- thread_id="23" thread_name="Thread-3" thread_priority="5" --- [INFO] Logging info

4. Вывод

В этой статье показан простой способ добавления информации о потоке в ваш проект Java с использованием параметров Log4j2. Если вы хотите проверить код, он доступен на GitHub .