我打算用log4j替换旧的记录器。而不是直接使用Logger,我需要创建继承Logger的新类LocalLogger。这样做的原因 - 我需要旧记录器中可用的新记录方法名称。
我有log4j logger:
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(???)
}
}
答案 0 :(得分:1)
我建议您不要在此实例中扩展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.
}