log.info(“dsasdds {}”, var) 和 log.info(“dsasdds” + var) 的区别?

Difference between log.info(“dsasdds {}”, var) and log.info(“dsasdds ” + var)?

之前我一般都是用log.info(“dsasdds ” + var)的方式来添加日志,但是现在,在我的新工作场所,我看到每个人都使用log.info(“dsasdds {}”, var)的方式来打印日志?这两种方式在内部工作方式上有什么显着差异吗?

这取决于日志中打印的变量的计算。
假设 var.toString() 相对昂贵并且当前记录器未启用 info 级别,通过使用 log.info(“dsasdds ” + var) 为 "nothing" 计算了相对昂贵的操作,因为没有日志写了。
使用 log.info(“dsasdds {}”, var),仅当当前记录器的级别与请求的级别匹配时才会调用 var.toString()(此处为 INFO)。
对于表达式,suppliers (that are lazily evaluated) is also a possibility :

logger.trace("Some long-running operation returned {}", () -> expensiveOperation());

现在系统地使用惰性评估是一个好习惯 expressions/variables 吗? 不一定,但这不会影响您示例的可读性。