以前我通常曾经使用log.info(“dsasdds ” + var)
添加日志,但是现在,在我的新工作场所中,我看到每个人都使用log.info(“dsasdds {}”, var)
方式打印日志吗?这两种方式在内部工作方式之间是否有显着差异?
答案 0 :(得分:2)
这取决于日志中打印的变量的计算。
假设var.toString()
相对昂贵,并且当前记录器未启用info
级别,通过使用log.info(“dsasdds ” + var)
,由于没有写入任何日志,因此“无”而计算出了相对昂贵的操作。
使用log.info(“dsasdds {}”, var)
,仅当当前记录器的级别与请求的级别(此处为var.toString()
)相匹配时,才会调用INFO
。
对于表达式,suppliers (that are lazily evaluated) is also a possibility:
logger.trace("Some long-running operation returned {}", () -> expensiveOperation());
现在使用系统懒惰的评估表达式/变量是一种好习惯? 不一定,但这在您的示例的可读性方面也没有损害。