SLF4J - 迁移器

  • 简述

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

    SLF4J 是一个简单的单个 jar 文件 (slf4j-migrator.jar),您可以使用 java –jar 命令运行它。
    要运行它,请在命令提示符下浏览包含此 jar 文件的目录并执行以下命令。
    
    java -jar slf4j-migrator-1.8.0-beta2.jar
    Starting SLF4J Migrator
    
    这将启动迁移器,您可以看到一个独立的 Java 应用程序 -
    迁移者项目
    如窗口中指定的,您需要检查要执行的迁移类型并选择项目目录,然后单击按钮将项目迁移到 SLF4J。
    此工具会访问您提供的源文件并执行简单的修改,例如将导入行和记录器声明从当前日志记录框架更改为 SLF4j。

    例子

    例如,让我们假设我们有一个样本 log4j(2) 在 Eclipse 中使用单个文件进行项目如下 -
    
    import org.apache.log4j.Logger;
    import java.io.*;
    import java.sql.SQLException;
    import java.util.*;
    public class Sample {
       /* Get actual class name to be printed on */
       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,我们需要检查单选按钮 from log4j to slf4j 并选择项目的目录并单击 Exit 迁移。
    项目目录
    迁移器将上述代码更改如下。在这里,如果您观察到 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 迁移器的限制。
    • Migrator 不会修改像 ant、maven 和 ivy 这样的构建脚本,你需要自己做。
    • Migrator 不支持 String 类型以外的消息。
    • Migrator 不支持 FATAL 级别。
    • 在使用 log4j 时,migrator 不会将调用迁移到 PropertyConfigurator 或 DomConfigurator。