我使用 Log4perl 作为包的一部分来捕获特定 DBI 连接正在做什么。我目前的计划是为每个连接创建一个新的记录器对象 via Log::Log4perl->get_logger($mysql_connect_id)
,它应该允许各种连接写入不同的文件或同一个文件,而不会互相搞砸。
我担心的是当连接断开并且不再需要该记录器时会发生什么。如果 Log4perl 只是无限期地保留这些记录器,这听起来像是内存泄漏的秘诀。
在我确定它不再有用之后,摆脱记录器的最佳方法是什么?或者,相反,这甚至是一个问题——Log4perl 是否有某种内置的处理机制已经可以防止这种泄漏?
编辑: 在问题的评论中提到,这里可能值得一提:Log::Log4perl::Logger 有一个
DESTROY
看起来很有希望的方法。但是,它没有记录,并引发了一堆“在字符串 eq 中使用未初始化的值”警告,这让我很警惕;感觉就像一个黑客。(但如果这是最好/唯一的方法,我想问题变成“如何关闭来自特定包的特定警告?”)