来自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"));
如何将控制台appender添加到root logger并定义appender的日志级别。我问这个是因为我想在root logger中添加多个appender。
答案 0 :(得分:1)
作为替代方法,您可以使用以下ThresholdFilter添加example from the manual来指导您(它使用MarkerFilter,但应该是类似的过程)。
答案 1 :(得分:1)
以下是为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));
要记住的唯一要点是Appender
日志级别可以降低logger
中给出的日志记录级别,但不能提高日志记录级别。
假设在上面的示例中,RootLogger
初始化级别为Level.ALL
,而Stdout
appender级别为Level.INFO
。因此,它会打印INFO
级及以上(WARN
,ERROR
)的日志。但是,反过来不起作用,即如果RootLogger
有Level.INFO
且Stdout
appender有Level.All
,那么它也会打印INFO
级别的日志以及。