java - 如何创建 MyLogger?

标签 java logging log4j

我使用 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 被忽略。最简单的方法是按照 的精神包装最初返回的 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/

相关文章:

java - 套接字上的多线程客户端服务器聊天。负载测试。接收失败

java - 如何修复 content.Equals 的错误输出?

java - 单击按钮将选定的行值转换为 Javafx 中的字符串

c++ - boost 日志,为什么不打印 threadid 和 processid

grails - grails log4j事件记录器

java - 关于 <intent-filter> 标签及其嵌套标签的问题

java - 我的自定义 Log4j2 XML 配置文件 Java 中的记录时间不正确

python - 如何完全关闭sqlalchemy注销

java - 使用 log4j 创建不同的日志文件

log4j - 整合 Spark 日志