我有三节课。
BaseLogger
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
public class BaseLogger {
public final static Logger LOG = LogManager.getLogger(BaseLogger.class);
}
基类
public class BaseClass extends BaseLogger{
//Some common methods used throughout Application.
}
SomeClass的
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
需要:有人可以指导我如何实现以下目标。
2016-04-28 16:52:11 INFO SomeClass:5 - Test Log
由于我已经使用过static,我不允许在 LogManager.getLogger 中使用这个而我不得不使用BaseLogger Class name可以有人指导我如何打印当前类如果从其他类调用LOG,则使用name而不是BaseLagger。
答案 0 :(得分:1)
在日志记录框架(Java util,apache日志记录,jboss日志记录等)中定义的记录器模式%c从调用logger方法的类中获取完全限定的类名。
要以所需的方式获取类名,您需要使记录器模式适应自定义模式,即%X {classname}
在此处,可以在使用MDC.put(“ classname”,com.xxx.xxx)调用logger之前在班级中设置班级名称