我想在我的程序中为相当少的类添加日志记录。我是否需要添加行来为每个需要记录器的类定义一个记录器(我想避免在我的程序周围传递记录器对象。
public class SomeClass {
static Logger logger = Logger.getLogger(SomeClass.class);
.......
如果我这样做,我能否得到这个调用以“了解”它的类(类似于 this.class
或者有其他方法可以做到这一点
最佳答案
我发现一个方便的替代方法是创建一个抽象类来为您创建记录器:
public abstract class AbstractLoggingThing {
private final Logger log = LoggerFactory.getLogger(this.getClass());
protected Logger getLog() {
return log;
}
}
然后按照惯例,每个从它继承的类都有一个正确配置的 Logger,您不必到处都使用相同的、愚蠢的代码。项目中的大多数类都可以很容易地将其包含在它们的继承层次结构中,对于那些不能的,无论出于何种原因,您仍然可以退回到旧样式。您还可以添加不错的便捷方法,例如:
protected void info(String message, Object... args) {
// What goes here depends on your logging library
}
关于java - 将 Log4j 记录器放入多个类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7798925/