什么是创建Log4j记录器的开销

时间:2009-04-21 08:47:59

标签: java log4j

我的应用程序中有一些web服务,我想根据webservice名称将它们记录到不同的文件中。为此我用

创建记录器
myLogger = Logger.getLogger(logKey);

我想知道我是否应该缓存这些记录器以避免为每次调用创建它们,或者我可以忽略开销。

2 个答案:

答案 0 :(得分:23)

log4j已使用默认日志存储库(Hierarchy)缓存记录器。换句话说,它只是一个哈希表查找。

但是,根据我的经验,你倾向于使记录器保持静态,所以它最终只会被每个类调用一次。

答案 1 :(得分:9)

此方法Logger.getLogger(logKey)在logger缓存中查找具有在logKey中传递的名称的记录器。如果它不存在则创建一个。首先调用记录器名称,将创建一个Logger,但稍后的调用将从缓存中获取,因此您不需要处理 这在您的代码中。