2

我有大约 400 个生产 Java 源代码文件,每个文件大约有 10 到 2 万行代码,用于从 Log4J 字符串连接更改为 SLF4J 的参数化日志记录。

if(log.isDebugEnabled(){
    log.debug("Came here with value: " + car.getName());
}

我想利用 SLF4J 参数化的日志记录

log.debug("带着值来到这里:{}", car.getName());

我正在考虑编写一个脚本来自动化这个过程,或者实际上有没有办法做到这一点?

我想更改为 SLF4J 的参数化日志记录的主要原因是性能

由于 LogBack + SLF4J 需要 JavaSE 5 及更高版本,将使用 SLF4J + Log4J,而我需要在 J2SE 1.4 JVM 环境中工作。

4

1 回答 1

3

我怀疑在使用 SLF4J/LOG4J 时您是否会有任何性能改进,因为 org.slf4j.impl.Log4jLoggerAdapter将使用与您已经使用的代码几乎相同的代码(两次评估是否启用了记录器)。它首先将检查是否启用了调试日志记录,然后将格式化的消息发送到org.apache.log4j.Category再次检查消息是否应记录在配置的级别。

无论如何,更改为参数化日志记录是有意义的,因为它更具可读性和更短。不幸的是,我不知道重构代码的任何授权方式。

编辑:刚刚注意到存在一个SLF4J 迁移器,它似乎有助于进行一些基本的迁移(导入行和记录器声明)。这可能有助于开始迁移——即使日志语句不会被触及并且必须手动重构。

于 2011-07-17T20:01:48.657 回答