java - 将 Log4j 记录器放入多个类中

标签 java log4j

我想在我的程序中为相当少的类添加日志记录。我是否需要添加行来为每个需要记录器的类定义一个记录器(我想避免在我的程序周围传递记录器对象。

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/

相关文章:

java - Glassfish 线程池、接受器线程、HTTP 最大连接数

java - Spring Integration SFTP 代码被调用两次

Maven Java 应用程序在从命令行而不是从 Netbeans IDE 中运行时崩溃

Scala:使用 log4j 将日志写入文件

java - 如何让Android等待?

java - 正则表达式检查字符串格式?

java - 无法将 List<SomeClass<SomeClass 的边界类型的子级>> 添加到 List<SomeClass<?>>

java - Logback - 如何通过在日志语句上指定来写入任何日志级别?

java - tomcat 日志存储在一个单独的文件中

java - 如何使用 log4j 将错误信息写入单独的文件中