gpt4 book ai didi

java - 如何在代码中使用 log4j?

转载 作者:行者123 更新时间:2023-12-04 23:01:59 24 4
gpt4 key购买 nike

我们必须在我们的应用程序中引入日志记录。我们决定使用 log4j 是不是一个不错的选择。还有人告诉我们应该使用单例模式来使用 log4j 有人可以强调如何以及为什么吗?

最佳答案

在单例模式中,Logger字段对于类是静态的:

public class SomeAwesomeClass {

private static final Logger logger = Logger.getLogger(SomeAwesomeClass.class);

}

另一种方法是使 Logger 字段成为非静态的(即,SomeAwesomeClass 的每个实例都持有对 Logger 的引用) :

public class SomeAwesomeClass {

private final Logger logger = Logger.getLogger(SomeAwesomeClass.class);

}

我认为您选择哪条路线不会有太大区别,因为我相信 Log4j 会为 SomeAwesomeClass 的每个实例不断返回相同的 Logger 实例。真的,它只是不必要的对象引用,所以你还不如使用单例模式。

但是,如果你做这样的事情,非单例模式就变得必要了:

public class SomeAwesomeClass {

private final Logger logger = Logger.getLogger(getClass());

public void doSomething() {
log.info("Doing something");
}

}

public class AwesomerClass extends SomeAwesomeClass {
}

稍后...

SomeAwesomeClass o = new AwesomerClass();
o.doSomething();

在此示例中,logger 字段将对应于 AwesomerClass,而不是 SomeAwesomeClass

关于java - 如何在代码中使用 log4j?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4134306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com