Как сделать Java Logging для разных чередующихся потоков синхронно? - PullRequest
0 голосов
/ 26 марта 2019

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

У меня небольшое приложение (SpringBoot + Java), и оно использует ThreadPool для выполнения нескольких задач. Допустим, в моем пуле 2 потока. Прямо сейчас log4j используется для регистрации. Он записывает журналы всех потоков в один файл, а данные журнала всех двух потоков чередуются.

Так что каждый поток работает как -

[Thread-1][08:15:00] entered into application
[Thread-1][08:15:00] entered method A
[Thread-1][08:15:05] exit method A
[Thread-1][08:15:10] entered method B
[Thread-1][08:15:15] exit method B
[Thread-1][08:15:30] exit from application

[Thread-2][08:15:01] entered into application
[Thread-2][08:15:01] entered method A
[Thread-2][08:15:04] exit method A
[Thread-2][08:15:11] entered method B
[Thread-2][08:15:12] exit method B
[Thread-2][08:15:22] exit from application

но мой лог-файл содержит эти записи на основе отметки времени-

[Thread-1][08:15:00] entered into application
[Thread-1][08:15:00] entered method A
[Thread-2][08:15:01] entered into application
[Thread-2][08:15:01] entered method A
[Thread-2][08:15:04] exit method A
[Thread-1][08:15:05] exit method A
[Thread-1][08:15:10] entered method B
[Thread-2][08:15:11] entered method B
[Thread-2][08:15:12] exit method B
[Thread-2][08:15:14] exit from application
[Thread-1][08:15:15] exit method B
[Thread-1][08:15:30] exit from application

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

Я уже искал и нашел ниже статьи как ближайший, но я не хочу, чтобы другие файлы журнала- Как записать несколько потоков в разные файлы журнала?

Мне нужно вывести все данные журнала в один файл журнала, сгруппированный по имени потока и отсортированный по времени начала потока.

1 Ответ

0 голосов
/ 27 марта 2019

Поскольку я полагаю, что разделение журналов в консольном приложении не будет работать, я бы предложил определить отдельные FileAppenders для каждого Thread, как описано здесь

...