SLF4J - 迁移器

如果您在 Jakarta Commons Logging (JCL) 或 log4j 或 java.util.logging (JUL) 中有一个项目,并且想要将这些项目转换为 SLF4J,则可以使用 SLF4J 发行版中提供的迁移器工具进行转换。

Migrator

运行 SLF4J 迁移器

SLF4J 是一个简单的单个 jar 文件 (slf4j-migrator.jar),您可以使用 java –jar 命令运行它。

要运行它,请在命令提示符中浏览此 jar 文件的目录并执行以下命令。

java -jar slf4j-migrator-1.8.0-beta2.jar
Starting SLF4J Migrator

这将启动迁移器,您可以看到一个独立的 Java 应用程序作为 −

迁移器项目

如窗口中所指定,您需要检查要执行的迁移类型并选择项目目录,然后单击"将项目迁移到 SLF4J"按钮。

此工具转到您提供的源文件并执行简单的修改,例如将导入行和记录器声明从当前日志记录框架更改为 SLF4j。

示例

例如,假设我们在 eclipse 中有一个示例 log4j(2) 项目,其中包含一个文件,如下所示 −

import org.apache.log4j.Logger;
import java.io.*;
import java.sql.SQLException;
import java.util.*;

public class Sample {
   /* 获取要打印的实际类名 */
   static Logger log = Logger.getLogger(Sample.class.getName());

   public static void main(String[] args)throws IOException,SQLException {
      log.debug("Hello this is a debug message");
      log.info("Hello this is an info message");
   }
}

要将示例 log4j(2) 项目迁移到 slf4j,我们需要选中单选按钮 从 log4j 到 slf4j,并选择项目的目录,然后单击 退出 进行迁移。

项目目录

迁移器将上述代码更改如下。在这里,您可以观察到 import 和 logger 语句已被修改。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
import java.sql.SQLException;
import java.util.*;

public class Sample {
   static Logger log = LoggerFactory.getLogger(Sample.class.getName());
   public static void main(String[] args)throws IOException,SQLException {
      log.debug("Hello this is a debug message");
      log.info("Hello this is an info message");
   }
}

由于您的项目中已经有 log4j.jar,因此您需要将 slf4j-api.jarslf4jlog12.jar 文件添加到项目中才能执行它。

SLF4JMigrator 的限制

以下是 SLF4J 迁移器的限制。

  • 迁移器不会修改 ant、maven 和 ivy 等构建脚本,您需要自己动手。

  • 迁移器不支持除 String 类型之外的消息。

  • 迁移器不支持 FATAL 级别。

  • 在使用 log4j 时,迁移器不会迁移对 PropertyConfigurator 或 DomConfigurator 的调用。