log4J регистрирует файлы на поток, но не может освободить регистраторы, даже когда поток умирает - PullRequest
0 голосов
/ 16 апреля 2011

* строгий текст * Я вызвал getLogger (уникальный идентификатор), чтобы создать отдельный регистратор для каждого потока и генерировать различные файлы на основе идентификатора потока и других уникальных идентификаторов, используя log4j.

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

если я пытаюсь использовать logger.shutdown (), он также отключает другие регистраторы открытых потоков, что останавливает ведение журнала в других файлах.

Пожалуйста, предложите решение для этого.

1 Ответ

0 голосов
/ 21 апреля 2011

Жизненный цикл блокировки файлов Log4j не связан с жизненным циклом потока.

Если вы можете поймать время умирания нити ...

Logger log = Logger.gerLogger(yourCategoryName);
Enumeration<?> enumeration = log.getAllAppenders();
while (enumeration.hasMoreElements()) {
    ((Appender) enumeration.nextElement()).close();
}

* Осторожно * Невозможно восстановить вашего "Аппендера".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...