2013-12-20 42 views
0

我看到下面的代码在类什么是使用静态和实例变量记录

private static final Logger defaultLogger = Logger.getLogger(this.getClass()); 
private Logger logger = defaultLogger; 

我想知道为什么静态和可变instace声明的原因之一?其余的类使用记录器变量。 我们使用Apache log4j作为基础日志库。

回答

2

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

0

我怀疑这是重构的效果。过去某个时间有人计划使用这两个记录器来做不同的事情,并且他们提到了不同的目的地。然后,第一个被更改为写入同一个。

  private Logger logger = defaultLogger; 

是需要为

1

它允许您在以后更改记录器上的每个实例做了最少的功。它默认为类记录器,但可以将其重新映射到其他记录器,可能在某些操作过程中。

请注意,logger变量是而不是final出于这个原因。