Я использую Log4perl как часть пакета для захвата того, что делает конкретное соединение DBI. Мой текущий план состоит в том, чтобы создать новый объект регистратора для каждого соединения через Log::Log4perl->get_logger($mysql_connect_id)
, который должен позволять различным соединениям записывать либо в разные файлы, либо в один и тот же файл, не портя друг друга.
Меня беспокоит то, что происходит, когда соединение отключено и этот регистратор больше не нужен. Если Log4perl просто хранит эти регистраторы бесконечно, это звучит как рецепт утечки памяти.
Какой лучший способ избавиться от регистратора, если я уверен, что он больше не нужен? Или, наоборот, это даже проблема - есть ли в Log4perl какой-то встроенный механизм удаления, который уже предотвращает такую утечку?
Редактировать: Упоминается в комментариях к вопросу, вероятно, стоит упомянуть здесь: Log :: Log4perl :: Logger имеет
DESTROY
метод, который кажется многообещающим. Однако он недокументирован и выдает кучу предупреждений «Использование неинициализированного значения в строковом эквалайзере», что вызывает у меня настороженность; это похоже на взлом. (Но если это лучший / единственный способ сделать это, я полагаю, что вопрос звучит так: «Как отключить конкретное предупреждение, исходящее из определенного пакета?»)