gpt4 book ai didi

java - Log4j 2.x 如何实现惰性参数求值?

转载 作者:搜寻专家 更新时间:2023-10-30 21:05:13 26 4
gpt4 key购买 nike

鉴于 Java argument evaluation mechanism , Log4j 2.x 如何实现 lazy evaluation当日志被禁用时用大括号格式化消息“以避免参数构造的成本”?

例如

logger.debug("Entry number: {} is {}", i, entry[i]);

最佳答案

我猜 Log4j 的意思是,使用大括号,他们避免在不需要时构造字符串(例如,Level 不是 Debug):

logger.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));

即使不记录完整的消息,也会计算完整的消息。

logger.debug("Entry number: {} is {}", i, entry[i]);

Log4j 可以先检查Log-Level,然后再决定是否值得构造消息字符串。这节省了字符串连接所需的资源。它只会在实际创建消息时对提供的对象调用 toString(),从而进一步节省计算成本。

Log4j 使用一个内部类 (org.apache.logging.log4j.message.ParameterFormatter),它用提供的参数替换每个 {}。它还将捕获 toString() 抛出的异常并报告这些失败。

关于java - Log4j 2.x 如何实现惰性参数求值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32183966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com