SLF4J迁移器(Migrator)
精华
小牛编辑
151浏览
2023-03-14
如果在Jakarta Commons Logging(JCL)或log4j
或java.util.logging(JUL)
中有项目,并且您希望将这些项目转换为SLF4J
,则可以使用SLF4J
发行版中提供的迁移器工具执行此操作。
运行SLF4J Migrator
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("这是一条调试日志信息.");
log.info("这是一条消息日志信息.");
}
}
要将示例log4j(2)项目迁移到slf4j,需要检查从log4j到slf4j的单选按钮并选择项目目录,然后单击Exit 以进行迁移。
迁移器更改了上面的代码如下。在这里,可观察到导入和记录器语句已修改。
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("这是一条调试日志信息.");
log.info("这是一条消息日志信息.");
}
}
由于项目中已经有log4j.jar
,因此需要将slf4j-api.jar
和slf4jlog12.jar
文件添加到项目中以执行它。
SLF4JMigrator的局限性
SLF4J迁移器有以下局限性。
- Migrator不会修改像ant,maven和ivy这样的构建脚本,需要动手修改。
- Migrator不支持
String
类型以外的消息。 - Migrator不支持
FATAL
级别。 - 使用log4j时,迁移器不会将调用迁移到
PropertyConfigurator
或DomConfigurator
。