sus*_*ani 2 java singleton log4j
我们必须在我们的应用程序中引入日志.我们决定使用log4j是一个不错的选择.还有人告诉我们应该使用单例模式来使用log4j可以有人强调如何以及为什么?
在单例模式中,该Logger
字段对于类是静态的:
public class SomeAwesomeClass {
private static final Logger logger = Logger.getLogger(SomeAwesomeClass.class);
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是使Logger
字段非静态(即每个实例的实例都SomeAwesomeClass
引用Logger
):
public class SomeAwesomeClass {
private final Logger logger = Logger.getLogger(SomeAwesomeClass.class);
}
Run Code Online (Sandbox Code Playgroud)
我不认为你选择哪条路线会产生很大的不同,因为我相信Log4j会不断Logger
为每个实例返回相同的实例SomeAwesomeClass
.实际上,它只是不必要的对象引用,所以你不妨使用单例模式.
但是,如果您执行以下操作,则非单例模式变得必要:
public class SomeAwesomeClass {
private final Logger logger = Logger.getLogger(getClass());
public void doSomething() {
log.info("Doing something");
}
}
public class AwesomerClass extends SomeAwesomeClass {
}
Run Code Online (Sandbox Code Playgroud)
后来...
SomeAwesomeClass o = new AwesomerClass();
o.doSomething();
Run Code Online (Sandbox Code Playgroud)
在此示例中,该logger
字段将对应于AwesomerClass
,而不是SomeAwesomeClass
.
归档时间: |
|
查看次数: |
10577 次 |
最近记录: |