gpt4 book ai didi

java - 使用 LogManager.getLogger() 获取自定义 Logger 包装类的引用

转载 作者:行者123 更新时间:2023-12-02 09:55:50 26 4
gpt4 key购买 nike

我正在使用 Log4j2,默认记录器实现已在我的项目中广泛使用。我现在需要解析日志消息并替换某些关键字,然后再将它们记录到日志文件中。满足此要求的一个好方法可能是重写记录器方法,例如 info()error()...或其底层低级方法,我可以在其中解析message 并修改它,然后调用原来的父类(super class)logger方法。

我看到 AbstractLogger 类是 Logger 接口(interface)的实现类,当您执行 Logger logger = LogManager.getLogger();在您的类中,您将获得 AbstractLogger 类的引用。

现在,我创建了一个类CustomLogger,它扩展了AbstractLogger,其javadoc说要这样做:

Base implementation of a Logger. It is highly recommended that any Logger implementation extend this class.

问题是,如何使 LogManager.getLogger() 返回我的 CustomLogger 类的引用而不是 AbstractLogger 类,所以我现有类中的日志语句不需要修改,并且我能够在记录消息之前解析和修改消息。目前我继续获取 AbstractLogger 引用。我想知道 Log4j 希望用户如何扩展其实现。

最佳答案

正如我的评论中提到的 - 我认为附加程序可能是执行此操作的更好地方。这意味着您必须实现

org.apache.logging.log4j.core.Appender

或从

扩展
org.apache.logging.log4j.core.appender.AbstractAppender

并更改它

public void append(LogEvent event) {}   

方法。根据您的需要,您还可以修改或复制其他一些附加程序类(不幸的是,其中一些被声明为最终的)并进行相应的修改。

.rm

关于java - 使用 LogManager.getLogger() 获取自定义 Logger 包装类的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56020673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com