我打算用log4j one代替旧的记录器。无需直接使用Logger,而是需要创建继承自Logger的新类LocalLogger。这样做的原因-我需要在旧记录器中可用的新记录方法名称。
我有log4j记录器:
protected final Logger logger = Logger.getLogger(getClass());
如何制作可以像Logger一样制作LocalLogger的功能?
如何将C类传递给超级LocalLogger?
LocalLogger的草案:
public class LocalLogger extends Logger{
protected LocalLogger(String name) {
super(name);
}
public LocalLogger getLocalLogger(Class c)
{
return new LocalLoger(???)
}
}
最佳答案
我建议您在这种情况下不要扩展Logger
。而是使用delegation pattern。
使用所需的方法创建一个全新的类,但将日志记录调用委托给Logger
的内部实例:
public class LocalLogger {
private final Logger logger;
public LocalLogger(String name) {
logger = Logger.getLogger(name);
}
public LocalLogger(@SuppressWarnings("rawtypes") Class clazz) {
logger = Logger.getLogger(clazz);
}
public void antiqueLoggingMethod(String msg) {
logger.info(msg);
}
// etc.
}
关于java - 继承log4j Logger,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18148468/