【问题标题】:For logging which pattern is good [closed]用于记录哪种模式是好的[关闭]
【发布时间】:2018-11-02 09:15:12
【问题描述】:

我有以下两种我正在考虑记录的模式。我需要你的帮助来深入理解这两个差异。这里我的意图是追加和连接。

log.info("姓名:" +name);

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

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

谢谢, 纳根德拉。

【问题讨论】:

  • 在这种情况下并不特别重要。当您有 2 个或更多占位符时,在我看来,第二种样式变得最易读。性能是一个不错的奖励,但我不会为此感到压力。
  • @Michael 当然,但在记录的情况下,您希望避免您正在做的事情出现性能问题。

标签: java spring logging log4j slf4j


【解决方案1】:

这不仅是可读性问题,也是性能问题。

这个选项:

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

会比这个表现更好:

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

那是因为第二种方法会导致JVM执行一个String连接,即使不会打印日志。

当您想打印很多东西时,第一个选项更容易阅读。

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

【讨论】:

    【解决方案2】:

    首先,你必须知道:

    "Name: " + name

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-04
      • 1970-01-01
      • 2016-09-07
      相关资源
      最近更新 更多