log4j 迁移到 log4j2

Arv*_*ind 6 java logging log4j log4j2

Log4j 迁移指南

https://logging.apache.org/log4j/2.x/manual/migration.html

指出

对接受 LoggerFactory 的 org.apache.log4j.Logger.getLogger 的调用必须删除 org.apache.log4j.spi.LoggerFactory 并使用 Log4j 2 的其他扩展机制之一。

log4j2 中有哪些可用的扩展机制以及如何最好地迁移 log4j2 中如下所示的方法

private static TraceLoggerFactory stTraceFactory = new TraceLoggerFactory();

public static Logger getTraceLogger(final String name) {
    return getLogger(name, stTraceFactory);
}


class TraceLoggerFactory implements LoggerFactory {
    @Override
    public Logger makeNewLoggerInstance(final String name) {
        return new TraceLogger(name);
    }
}
Run Code Online (Sandbox Code Playgroud)

nik*_*000 1

与问题不完全相关,但以下是我在 log4j2 迁移中的学习。希望它可以帮助某人。

自 2021 年底发现 log4j 漏洞以来,许多组织已升级到 log4j2 以克服该漏洞。许多开发人员需要了解 log4j 到底是什么以及漏洞是什么。我建议您阅读相关内容,因为这是软件行业的一个主要漏洞。我还将 2 个应用程序迁移到 log4j2,并在迁移过程中遇到了许多问题。因此在这里写下这篇文章。我稍后会写一篇详细的文章,但目前,如果其他人从 log4j 迁移到 log4j2,我更喜欢阅读我下面的学习内容。

  1. 这是应用程序中的重大更改,因此执行此操作时要小心。它涉及到几乎所有存在的文件的更改。
  2. 如果您要对遗留应用程序进行更改,您可能需要更改许多其他受支持的 jar,因此要了解这需要时间。
  3. 如果有 log4j.properties 文件,请将其转换为 log4j.xml ,可能会感觉很难转换,但相信我,您不会在属性文件上找到太多文档。
  4. REPLACE ALL 方法并不总是有效,请仔细检查您的工作。
  5. 会有传递依赖,尝试理解这一点并在 pom.xml 中排除它们。
  6. 如果您正在更改 spring 或任何其他框架的版本,请了解新版本中进行了许多更改,请参阅文档。

从 Log4j 迁移到 Log4j2 的文档: https://logging.apache.org/log4j/2.x/manual/migration.html#Log4j2ConfigurationFormat

一些帮助我的网站: https://stackify.com/log4j2-java/ https://www.digitalocean.com/community/tutorials/log4j2-example-tutorial-configuration-levels-appenders https://howtodoinjava.com /log4j2/log4j2-consoleappender-example/ https://access.redhat.com/solutions/4347841