[英]SLF4J log same class at different levels in different appenders
我有两个附加程序,在这种情况下,是控制台附加程序和滚动文件附加程序。 对于某个类的日志输出(在本例中为com.google.api.client.http.HttpTransport
),如何让该类在一个附加程序中以DEBUG
级别登录,在另一个附加程序中以WARN
级别登录?
这似乎不是一件很复杂的事情,但是不幸的是,这似乎完全超出了我可以找到示例的典型用例。 我并不想避免编写自己的Filter,但是如果这确实是答案,我会感到惊讶。
我正在使用Spring Boot,如果那很重要,我更喜欢使用JavaConfig。
感谢大家的回应! 我很高兴通过阅读有关“正确”方法的意见来了解更多信息,请在继续之前检查您是否首先回答了原始问题:)
您可以使用Logback的ThresholdFilter
来过滤附加器收到的事件,并且可以将这些过滤的附加器与此类com.google.api.client.http.HttpTransport
记录器相关联。
您的问题指出:
我正在使用Spring Boot,如果那很重要,我更喜欢使用JavaConfig。
因此,我假设您正在以编程方式创建追加程序。 您可以创建ThresholdFilter
并将其与附加程序关联,如下所示:
ConsoleAppender consoleAppender = new ConsoleAppender();
ThresholdFilter debugFilter = new ThresholdFilter();
debugFilter.setLevel("DEBUG");
consoleAppender.addFilter(debugFilter);
...
FileAppender<ILoggingEvent> fileAppender = new FileAppender<>();
ThresholdFilter warnFilter = new ThresholdFilter();
warnFilter.setLevel("WARN");
fileAppender.addFilter(warnFilter);
...
然后,您需要将这些附加程序与特定的记录器相关联,如下所示:
Logger logger = (Logger) LoggerFactory.getLogger("com.google.api.client.http.HttpTransport");
logger.addAppender(fileAppender);
logger.addAppender(consoleAppender);
这是使用XML配置的相同方法:
<appender name="DEBUG_STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- only accept DEBUG log events -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>...</pattern>
</encoder>
</appender>
<appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- only accept WARN log events -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>...</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>...</pattern>
</encoder>
</appender>
<!-- associate this logger instance with the two appenders -->
<logger name="com.google.api.client.http.HttpTransport">
<appender-ref ref="DEBUG_STDOUT"/>
<appender-ref ref="WARN_FILE"/>
</logger>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.