0

我打算用 log4j 替换旧的记录器。我需要创建继承自 Logger 的新类 LocalLogger,而不是直接使用 Logger。这样做的原因 - 我需要旧记录器中可用的新记录方法名称。

我有 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(???)
    }

}
4

1 回答 1

1

我建议你不要Logger在这种情况下扩展。相反,使用委托模式

使用您希望拥有的方法创建一个全新的类,但将日志记录调用委托给以下内部实例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.
}
于 2013-08-09T14:15:25.547 回答