如何有效地在多个 类 中使用静态记录器?
How to use static Logger in multiple Classes effectively?
我有三个 classes。
- BaseLogger - 这里我们正在创建 Logger 的静态实例。
- BaseClass - 框架级别 class 包含几乎每个 class.
中使用的常用方法
- SomeClass - 它实现了 BaseClass 并记录了一些信息。
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)
我有三个 classes。
- BaseLogger - 这里我们正在创建 Logger 的静态实例。
- BaseClass - 框架级别 class 包含几乎每个 class. 中使用的常用方法
- SomeClass - 它实现了 BaseClass 并记录了一些信息。
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)