用于记录哪种模式是好的

时间:2018-05-23 11:35:02

标签: java spring logging log4j slf4j

我有以下两种模式,我正在考虑记录。我需要你的帮助才能理解这两种差异。在这里,我的意图是追加和连贯。

log.info(“名称:”+名称);

log.info(“名称:{}”,名称);

任何人都可以帮助完全理解这一点。另外,请根据当前市场建议是否有更好的方法。

谢谢, Nagendra。

2 个答案:

答案 0 :(得分:4)

这不仅是一个可读性问题,也是一个表现问题。

此选项:

log.info("Name: {}", name);

表现会比这个表现更好:

log.info("Name: " +name);

这是因为第二种方法会导致JVM执行字符串连接,即使不打印日志也是如此。

当您想要打印许多内容时,第一个选项更容易阅读。

第一个选项更容易维护和重构,因为您可以快速调整参数的文本和位置,而无需进入连接地狱。

答案 1 :(得分:0)

首先,您必须意识到:

"Name: " + name

将始终连接字符串并创建新对象。

然而,第二种方法更好,因为只有在打开正确的日志记录级别并且需要这种连接时才进行字符串插值(插入值而不是括号)。

如果您将拥有许多带字符串连接的信息日志,并且应用程序日志记录级别将仅设置为错误,则第二种方法将阻止创建新的String对象。