之前我通常使用log.info(“dsasdds ” + var)
添加日志,但现在,在我的新工作场所,我看到每个人都使用 log.info(“dsasdds {}”, var)
打印日志的方法?这两种方式在内部工作方式上有什么显着差异吗?
最佳答案
这取决于日志中打印的变量的计算。
假设 var.toString()
相对昂贵,并且当前记录器没有启用 info
级别,通过使用 log.info(“dsasdds ” + var)
由于没有写入日志,因此计算了“无”相对昂贵的操作。
使用 log.info(“dsasdds {}”, var)
时,仅当当前记录器的级别与请求的级别匹配时才会调用 var.toString()
( 信息
在这里)。
对于表达式,suppliers (that are lazily evaluated) is also a possibility :
logger.trace("Some long-running operation returned {}", () -> expensiveOperation());
现在使用系统地惰性计算表达式/变量是一个好习惯吗? 不一定,但这不会损害您示例中的可读性。
关于java - log.info (“dsasdds {}” , var) 和 log.info (“dsasdds ” + var) 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56587651/