[log4j] каждый поток в отдельный файл

kill-still

1) В общем есть класс наследник Tread (некая job-а). Периодически создаётся объект этого класса и запускается. Я хочу, чтобы лог каждого из этих объектов писался в отдельный файл.
2) Возможно в будущем я захочу не создавать/уничтожать эти потоки каждый раз, а держать объекты в памяти и периодически запускать. При этом каждый вызов метода run должен идти в отдельный файл.
Не подскажете, как настроить, чтобы выполнялся хотя бы п.1?

danilov

Напиши свой аппендер, который кладёт ивенты в разные файлы в зависимости от значения Thread.currentThread.
Не очень изящно, но зато это перпендикулярно твоей текущей структуре логов

kill-still

Нашёл на класспасе аппендер, который в буфер пишет.

katrin2201

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

Andbar

У меня была подобная задача, только не с потоками, а с некими сущностями, которые загружались из БД. Поднял документацию по log4j, оказалось, что можно подгрузить property-файл с конфигурацией с указанием подстановочных макросов (при этом дерево настраиваемых логгеров с навешенными аппендерами добавится к существующему). Соответственно, решение может быть простое: подгружаешь конфигурацию. Эту возможность можно применить и для потоков: при старте загружается общая конфигурация, после чего, перед запуском (или в начале работы) каждого потока подгружаешь дополнительную конфигурацию с подставленными макросами имени и/или номера потока.

Hastya

OFF. logback такое умеет

kill-still

Библиотека сторонняя, не могу. правильный ответ дал.
Оставить комментарий
Имя или ник:
Комментарий: