继承log4j Logger

时间:2013-08-09 14:00:21

标签: java log4j

我打算用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(???)
    }

}

1 个答案:

答案 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.
}