首页 > 解决方案 > 使用 slf4j 绑定自定义 log4j2 包装器

问题描述

我正在 log4j2 上编写一个自定义包装器。使用https://logging.apache.org/log4j/2.x/manual/customloglevels.html#CustomLoggers

要求是根据记录的对象类型选择附加程序。我正在考虑的方法是扩展 log4j2 记录器并覆盖日志方法(如 info),在这些方法中,检查对象类型并调用所需的附加程序。

现在我希望我的应用程序直接使用 slf4j 外观而不是 log4j2。需要有关如何将我的自定义 log4j2 包装器绑定到 slf4j 的帮助,并且省力:)

我在想的一个选择(还没有尝试过)是在 log4j-slf4j-impl 中引用我的 customlogger 包装器并生成 jar 并在应用程序中使用它, https://github.com/apache/logging-log4j2/blob/ f838bd6f42ea104e692e9e2227dcc54283a41901/log4j-slf4j18-impl/src/main/java/org/apache/logging/slf4j/Log4jLogger.java

标签: log4j2slf4j

解决方案


如果您想根据对象类型选择 Appender,一种方法是使用 Log4j 2 的RoutingAppender。RoutingAppender 可以使用模式或脚本进行配置。该模式用于从日志事件中提取某些内容。然后将该值与配置的选项进行匹配,从中选择“路由”到 Appender。使用脚本时,脚本会返回要使用的“路线”的名称。


推荐阅读