使用 SLF4J 代替 Log4J

Log4J 一直是我们首选的日志框架,但其一直有个不便之处。当记录 DEBUG 日志时,我们常用以下语句:

 

if (LOG.isDebugEnabled()) {
  LOG.debug("...");
}

在这里,if 是个很恼人的判断语句。如果我们去掉 if,那便会导致不必要的日志消息渲染。这所导致的性能损耗并不是可以完全忽略不计的,某些情况下还有可能导致严重的性能问题。但如果我们留着 if,这又会污染我们的代码,使得其不再干净整洁。而且,当使用 PMD 等代码质量检查工具时,这样的 if 会使代码的圈复杂度变高。

 

当使用 SLF4J 时,如此问题便不会再骚扰我们。

 

LOG.debug("...{}...", param1, param2);
LOG.debug("...{}...{}", param1, param2);
LOG.debug("...{}...{}...{}", new Object[]{p1, p2, p3});

因为 SLF4J 使用类似于 java.text.MessageFormat 的字符串渲染方式,我们不必在使用 if 来判断是什么日记级别了。

 

PS. SLF4J 在 ServiceMix 中工作良好。

 

 

你可能感兴趣的:(log4j,slf4j)