【发布时间】:2013-12-17 16:33:49
【问题描述】:
如果是记录器,它表示每个记录器都有参数构造的隐藏成本。
例如:-
logger.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));
这会产生构造消息参数的成本,即将整数 i 和 entry[i] 都转换为字符串,并连接中间字符串,无论是否记录消息。参数构造的成本可能相当高,并且取决于所涉及的参数的大小。
在 log 4j 站点上,避免参数构造成本的最佳方法是使用 Log4j 2 的格式化功能。例如,代替上面的写:
logger.debug("Entry number: {} is {}", i, entry[i]);
在这种格式化功能中发生的事情,这次产生的成本会更少。它不是像以前那样创建字符串吗?请有人解释一下?
【问题讨论】:
标签: java string memory logging log4j2