📜  SLF4J-迁移器

📅  最后修改于: 2020-11-11 05:13:07             🧑  作者: Mango


如果您在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。

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

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,我们需要选中从log4j到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之类的构建脚本,您需要自己进行修改。

  • 迁移器不支持字符串类型以外的消息。

  • 迁移器不支持致命级别。

  • 使用log4j时,迁移器不会将调用迁移到PropertyConfigurator或DomConfigurator。