检查记录器级别的启用与不检查SLF4J\Logback

问题描述 投票:0回答:1

我在我的应用程序中使用

SLF4J
Logback
来记录基础设施。 我在任何日志之前使用
Logger.isDebugEnable()
方法,例如:

if(logger.isDebugEnable())
    logger.debug('process transaction....')

上述代码的目标是:当日志级别不是

process transaction....
时,不要在堆中构造字符串
Debug

我的问题是: 我的代码风格或直接

logger.debug('process transaction....')
不检查启用日志级别有好处吗?

java logging slf4j logback
1个回答
4
投票

这是 log4j 项目的遗产,不幸的是,slf4j API 使用字符串而不是对象使情况变得更糟(因此日志字符串的生成可能会被延迟)。 slf4j 引入了 {} 结构来规避这个问题,它允许您使用:

logger.debug("{}: {}", "MyClass", "Message to show to user");

记录器后端首先检查“is...Enabled()”,然后然后构造记录器字符串。

由于后端会自行检查,因此您不需要这样做,并且可以删除 if 子句,只留下记录器语句本身。

© www.soinside.com 2019 - 2024. All rights reserved.