【问题标题】:upgrade log4j to log4j2 with slf4j in project which configured using property files在使用属性文件配置的项目中使用 slf4j 将 log4j 升级到 log4j2
【发布时间】:2019-04-10 06:47:02
【问题描述】:

我正在尝试将项目中的“log4j”升级为“带有 slf4j 的 log4j2”。 Log4j 是使用属性文件配置的。我的项目分为多个子项目。一个子项目由多个工作流程组成。我的目标是明智地迁移记录器一个子项目,其余的将与 log4j 一起存在。我现有的代码也使用 log4j 特定方法,如“logger.getLoggerRepository()”、“logger.getLevel()”、“logger.log(level, logtext)”等。其他子项目 log4j 使用“PropertyConfigurator”配置。

我对以下链接有了一些想法,但这些在我的场景中没有多大帮助:

Migrating from log4j to log4j2 - properties file configuration

Configuring log4j2 and log4j using a single log4j2 xml file

https://dzone.com/articles/log4j-2-configuration-using-properties-file

我们正在使用以下代码使用属性文件配置 log4j。

public void configureLog4j() throws IOException
{
  String path = getLog4jConfigFilePath();
  File file = new File(path);
  if (file.exists())
  {
    PropertyConfigurator.configure(path);
  }else
  {
    throw new FileNotFoundException(path);
  }
}

我尝试用下面官方链接中提到的指令替换东西,但是在替换东西时出现了很多错误:

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

以模块方式迁移应用程序以便现有代码也可以正常工作并且可以在迭代中完成迁移的最佳方法是什么?

【问题讨论】:

    标签: java tomcat log4j log4j2 slf4j


    【解决方案1】:

    我找到了解决方案,这可以使用 LoggerContext.setConfigLocation() 方法来实现,如下所示:

    public void configureLog4j() throws IOException
    {
      String path = getLog4jConfigFilePath();
      File file = new File(path);
      if (file.exists())
      {
        LoggerContext context  = (LoggerContext)LogManager.getContext(false);
            context.setConfigLocation(file.toURI());
    //      Configuration config = context.getConfiguration();
    //      context.updateLoggers();
      }else
      {
        throw new FileNotFoundException(path);
      }
    }
    

    注意:这将使用代码在运行时配置 log4j2,因此在启动应用程序时,您可能会收到“找不到记录器定义”的错误。

    我们可以在tomcat的“ca​​telina.properties”文件中定义如下启动时加载log4j2定义。

    log4j2.configurationFile=file:///C:/location/of/log4j2.xml
    

    【讨论】:

      猜你喜欢
      • 2016-12-30
      • 2016-06-24
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 2011-05-17
      相关资源
      最近更新 更多