我有大约400个生产Java源代码文件,每行有大约数十到两万行代码,从Log4J字符串连接更改为SLF4J的参数化日志记录。
if(log.isDebugEnabled(){
log.debug("Came here with value: " + car.getName());
}
我想利用SLF4J的日志参数化
log.debug(“Came here with value:{}”,car.getName());
我在考虑编写一个脚本来自动化这个过程,或者实际上是否有办法实现这个目标?
我想更改为SLF4J的参数化日志记录的主要原因是performance。
由于LogBack + SLF4J将使用SLF4J + Log4J需要JavaSE 5及更高版本,而我需要在J2SE 1.4 JVM环境中工作。
答案 0 :(得分:3)
我怀疑使用SLF4J / LOG4J时会有任何性能提升 org.slf4j.impl.Log4jLoggerAdapter将使用与您已经完成的代码几乎相同的代码(两次评估是否启用了记录器)。它首先检查是否启用了调试日志记录,然后将格式化的消息发送到org.apache.log4j.Category,再次检查是否应该在配置的级别中记录消息。
Neverthelsse它可以更改为参数化日志记录,因为它更具可读性和更短。不幸的是,我不知道任何重构方法来重构代码。
编辑:注意到存在SLF4J Migrator,这似乎有助于进行一些基本的迁移(导入行和记录器声明)。这可能有助于开始迁移 - 即使记录语句不会被触及并且必须手动重构。