我在其中一个类
中看到下面的代码private static final Logger defaultLogger = Logger.getLogger(this.getClass());
private Logger logger = defaultLogger;
我想知道为什么声明static和instace变量?该类的其余部分使用记录器变量。 我们使用Apache log4j作为底层日志库。
答案 0 :(得分:2)
有人很懒。代码中的实例引用静态变量。换句话说,只有一个Logger实例(但有两个指示物)。
答案 1 :(得分:1)
允许您稍后在每个实例的基础上更改记录器。它默认为类记录器,但您可以将其重新映射到其他记录器,可能在某些操作期间。
请注意,由于这个原因,logger
变量不 final
。
答案 2 :(得分:0)
我怀疑这是重构的结果。有人在过去的某个时候计划将这两个记录器用于不同的东西,并且他们引用了不同的目的地。然后将秒数改为写入同一个。
private Logger logger = defaultLogger;
是需要完成的最少的工作