gpt4 book ai didi

java - 记录语法详细信息

转载 作者:太空宇宙 更新时间:2023-11-04 14:23:47 26 4
gpt4 key购买 nike

我有一个关于日志记录的简单问题为什么通常使用这种语法进行日志记录:

LOG.debug("invalidate {}",_clusterId);

不是这个:

LOG.debug("invalidate" + _clusterId);

最佳答案

在您的示例中,假设您将日志记录级别设置为 INFO。您想完全忽略调试级别的消息。但是log方法只有在获取参数后进入该方法后才能检查日志级别。因此,如果您不知道是否需要参数,最好避免对其进行评估。

在第二个示例中,即使日志记录设置为 info,_clusterId 也会对其调用 toString,然后将结果字符串与前面的字符串连接起来。然后,一旦进入该方法,记录器就会发现调试级别不需要记录,并且它会丢弃新创建的字符串并退出该方法。

在第一个示例中,如果未启用调试级别日志记录,则 _clusterId 不会调用 toString,并且不会构建日志消息。调用 toString 可能会很慢或产生垃圾,在无论如何都不会记录任何内容的情况下最好避免使用它。

以下是 log4j 的 org.apache.log4j.Category(Logger 的父类(super class))上的 debug 方法的源代码:

public void debug(Object message, Throwable t) {
if(repository.isDisabled(Level.DEBUG_INT))
return;

if(Level.DEBUG.isGreaterOrEqual(this.getEffectiveLevel()))
forcedLog(FQCN, Level.DEBUG, message, t);
}

关于java - 记录语法详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26888458/

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