Dan*_*Dan 10 java logging log4j
我使用log4j进行日志记录.我想修改方法:warn(..),error(..).我想在这个方法中修改消息.那么,有什么办法,如何创建自己的记录器?
public class MyLogger extends Logger {
protected MyLogger(String name) {
super(name);
}
@Override
public void error(Object message) {
message = "test - " + message;
super.error(message);
}
}
Run Code Online (Sandbox Code Playgroud)
在课堂电话中:
private static final Logger logger = MyLogger.getLogger(TestClass.class);
logger.error("error message");
Run Code Online (Sandbox Code Playgroud)
但它,不起作用.你可以帮帮我吗?谢谢.
你的问题是:
MyLogger.getLogger(TestClass.class)
Run Code Online (Sandbox Code Playgroud)
是一个static返回原始Logger类的方法.MyLogger被忽略了.最简单的方法是以装饰模式Logger的精神包装最初返回的类:
public class MyLogger extends Logger {
final Logger target;
protected MyLogger(Logger target) {
this.target = target;
}
@Override
public void error(Object message) {
target.error(message);
}
//...
}
Run Code Online (Sandbox Code Playgroud)
为了使用MyLogger装饰器,你必须用它包装原始记录器:
private static final Logger logger =
new MyLogger(Logger.getLogger(TestClass.class));
Run Code Online (Sandbox Code Playgroud)
考虑将其包装在自定义工厂中.
您永远不应该创建自己的记录器.我已经看到很多不好的理由创造一个,但从来没有一个好的理由.如果要在日志语句中添加一些上下文信息,可以使用Log4J的NDC/MDC功能.
http://wiki.apache.org/logging-log4j/NDCvsMDC
| 归档时间: |
|
| 查看次数: |
10446 次 |
| 最近记录: |