Log4j 1.2 桥接
Log4j 1.2 桥接允许使用 Log4j 1.2 API 编写的应用程序使用 Log4j 2 代替。
需求
Log4j 1.2 桥接依赖于 Log4j 2 API。当包含 Log4j 2 Core 模块时,以下 Log4j 1.x 方法的行为将与不包含该模块时不同。
方法 | 无 log4j-core | 有 log4j-core |
---|---|---|
Category.getParent() | 返回 null | 返回父记录器 |
Category.setLevel() | NoOp | 设置记录器级别 |
Category.setPriority() | NoOp | 设置记录器级别 |
Category.getAdditivity() | 返回 false | 返回记录器的累加设置 |
Category.setAdditivity() | NoOp | 设置 LoggerConfig 的累加性 |
Category.getResourceBundle() | NoOp | 返回与记录器关联的资源包 |
BasicConfigurator.configure() | NoOp | 重新配置 Log4j 2 |
如果不存在 log4j-core,则使用 Log4j 1.2 API 的调用中的位置信息将不准确。尝试将 Log4j 1.x 配置转换为 Log4j 2 的 config 包在没有 Log4j 2 的情况下不受支持。
有关更多信息,请参阅 运行时依赖项。
用法
要使用 Log4j Legacy Bridge,您必须首先识别并从应用程序中删除所有 Log4j 1.x JAR,并用桥接 JAR 替换它们。一旦到位,所有使用 Log4j 1.x 的日志记录都将被路由到 Log4j 2。
如果您使用的是 Maven,可以通过在终端中运行以下命令轻松识别项目中的任何 Log4j 1.x 依赖项。
mvn dependency:tree | grep 'log4j:log4j:'
此命令将为您的项目生成一个依赖项树,并过滤结果以仅显示 Log4j 1.x 依赖项。如果您发现任何依赖项,则需要更新您的 pom.xml 文件以删除 Log4j1 或将其排除在其他情况下。
虽然我们过去已经改进了桥接的兼容性,但尝试通过添加附加器、过滤器等来修改旧版 Log4j 的应用程序可能会遇到问题。在这种情况下,建议首先将这些组件迁移到 Log4j 2。