Log4j 2中的单独错误记录

安德烈·彼得伦科(Andrei Petrenko)

Log4j 2允许将类别和行信息包含到日志条目中。但是,作者声称创建该条目需要花费4至5倍的时间。

我日志的99.5%由正常操作条目(info)组成,而实际上并不需要行和类。我想知道是否有什么方法可以配置log4j 2,使其仅将文件,类和行包含在具有“警告”或更高级别的条目中?

雷姆科·波玛(Remko Popma)

从RC2开始,Log4j2不提供这种功能。您可以为此在log4j2 Jira问题跟踪器上提出功能请求。

同时,您是否要包含位置信息的控制权以每个记录器为基础。因此,一个想法可能是拥有一个配置了的单个系统级FATAL级记录器includeLocation="true"

配置片段示例:

  ...
  <Loggers>
    <AsyncLogger name="FATAL_LOGGER" level="fatal" includeLocation="true" additivity="false">
      <AppenderRef ref="someAppender"/>
    </AsyncLogger>
    <Root level="trace" includeLocation="false">
      <AppenderRef ref="someAppender"/>
    </Root>
  </Loggers>
</Configuration>

用法示例:

public class MyApp {
  private static final Logger logger = LogManager.getLogger(MyApp.class);

  public void someMethod(int value) {
    // normal trace-level logging does not include location info
    logger.trace("Doing some work with param {}", value);
    try {
      callAnotherMethod();
    } catch (Throwable t) {
      // use the shared fatal logger to include location info
      LogManager.getLogger("FATAL_LOGGER").fatal("Unexpected error", t);
    }
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章