如何有效地在多个 类 中使用静态记录器?

How to use static Logger in multiple Classes effectively?

我有三个 classes。

BaseLogger

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;


public class BaseLogger {
    public final static Logger LOG =  LogManager.getLogger(BaseLogger.class);
}

基础class

  public class BaseClass extends BaseLogger{
        //Some common methods used throughout Application.
    }

一些Class

public class SomeClass extends BaseClass{
    public static void main(String[] args){
        LOG.info("Test Log");
    }
}

输出

2016-04-28 16:52:11 INFO  BaseLogger:7 - Test Log 

REQUIRED : 谁能指导我如何实现下面的目标。

 2016-04-28 16:52:11 INFO  SomeClass:5 - Test Log

因为我使用了 static,所以我不允许在 LogManager.getLogger 中使用 this,我不得不使用 BaseLogger Class name 如果从其他 classes.

调用 LOG,有人可以指导我如何打印当前 class 名称而不是 BaseLagger

在日志框架(Java util、apache 日志、jboss 日志等)中定义的日志模式 %c 从 class 记录器方法被调用的地方。

要按照您的要求获得 class 名称,您需要调整您的记录器模式以具有自定义模式,即 %X{classname}

这里,classname 可以在你的 class 中设置,然后使用 MDC.put(“classname”,com.xxx.xxx)