使用静态和实例记录器变量的原因是什么

时间:2013-12-20 15:51:26

标签: java logging log4j

我在其中一个类

中看到下面的代码
private static final Logger defaultLogger = Logger.getLogger(this.getClass());
private Logger logger = defaultLogger;

我想知道为什么声明static和instace变量?该类的其余部分使用记录器变量。 我们使用Apache log4j作为底层日志库。

3 个答案:

答案 0 :(得分:2)

有人很懒。代码中的实例引用静态变量。换句话说,只有一个Logger实例(但有两个指示物)。

答案 1 :(得分:1)

允许您稍后在每个实例的基础上更改记录器。它默认为类记录器,但您可以将其重新映射到其他记录器,可能在某些操作期间。

请注意,由于这个原因,logger变量 final

答案 2 :(得分:0)

我怀疑这是重构的结果。有人在过去的某个时候计划将这两个记录器用于不同的东西,并且他们引用了不同的目的地。然后将秒数改为写入同一个。

            private Logger logger = defaultLogger;

是需要完成的最少的工作