我使用 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);
}
}
类通话:
private static final Logger logger = MyLogger.getLogger(TestClass.class);
logger.error("error message");
但是,它不起作用。你可以帮帮我吗?谢谢。
最佳答案
你的问题是:
MyLogger.getLogger(TestClass.class)
是一个 static
方法,它返回原始的 Logger
类。 MyLogger
被忽略。最简单的方法是按照 decorator 的精神包装最初返回的 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);
}
//...
}
为了使用 MyLogger
装饰器,您必须用它包装原始记录器:
private static final Logger logger =
new MyLogger(Logger.getLogger(TestClass.class));
考虑将其包装在自定义工厂中。
关于java - 如何创建 MyLogger?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9630616/