代码之家  ›  专栏  ›  技术社区  ›  Pavel_K

如何在log4j2中的手动代码配置中为appender添加级别?

  •  2
  • Pavel_K  · 技术社区  · 7 年前

    here

    您不需要声明单独的记录器来实现这一点。你可以 在AppenderRef元素上设置日志记录级别。

    和xml示例(部分):

    <Root level="trace">
      <AppenderRef ref="file" level="DEBUG"/>
      <AppenderRef ref="STDOUT" level="INFO"/>
    </Root>
    

    但当我自己创建配置时,我找不到一种方法来实现它。例如,我有consoleAppenderBuilder和rootLoggerBuilder:

    AppenderComponentBuilder consoleAppenderBuilder = builder
        .newAppender("Stdout", "CONSOLE")
        .addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT);
    
    RootLoggerComponentBuilder rootLoggerBuilder = builder
        .newRootLogger(Level.ERROR)
        .add(builder.newAppenderRef("Stdout"));
    

    2 回复  |  直到 7 年前
        1
  •  1
  •   Vikas Sachdeva    7 年前

    下面是为每个设置日志级别的一种方法 Appender 在里面 RootLogger -

    AppenderComponentBuilder consoleAppenderBuilder = builder
        .newAppender("Stdout", "CONSOLE")
        .addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT);
    
    RootLoggerComponentBuilder rootLoggerBuilder = builder
        .newRootLogger(Level.ALL)
        .add(builder.newAppenderRef("Stdout").addAttribute("level", Level.INFO));
    

    如果您有多个appender,下面的代码可以工作-

    RootLoggerComponentBuilder rootLoggerBuilder = builder
        .newRootLogger(Level.ALL)
        .add(builder.newAppenderRef("Stdout").addAttribute("level", Level.INFO)).add(builder.newAppenderRef("fileAppender").addAttribute("level", Level.ERROR));
    

    追加器 日志级别可以降低中给出的日志级别 logger 但不能提高日志记录级别。

    根记录器 初始化为 Level.ALL Stdout appender是的 Level.INFO . 因此,它将打印 INFO WARN , ERROR 根记录器 数量信息 Stdout公司 appender已 Level.All ,在这种情况下,它还将打印 信息

        2
  •  1
  •   D.B.    7 年前

    作为替代方法,您可以添加一个 ThresholdFilter 使用以下内容 example from the manual