我有一个具有与阈值过滤器的附加目的地的logback一个配置:
<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
...
</appender>
这确保了只有信息和更高(警告,错误)获得记录到系统日志。 但是,我们使用的第三方库的一个被记录在DEBUG一个特定的事件,我想记录这个事件到syslog。 第一种方法我脑子里想的是设法重新映射在记录器的日志级别,但我不知道这是否可能? 就像是:
<logger name="akka.some.Thing" level="DEBUG" logAs="INFO">
<appender-ref ref="SYSLOG" />
</logger>
显然,“logAs”参数不存在,所以我不能做到这一点。 什么是在登录akka.some.Thing到SYSLOG附加目的地,同时离开过滤到位等记录仪的最佳方法?
另一种方法是创建一个第二个添加器叫做SYSLOG2不具有到位的过滤器,并设置具体记录器使用,但不知道是否有是只有1个系统日志的appender的logback配置的方式...
谢谢,
我知道这是一个老问题 - 但它实际上是可以做到的OP希望与一个SyslogAppender做什么。
如果其他人正在寻找的一个例子,如何重新映射你可以去看看org.springframework.boot.logging.logback.LevelRemappingAppender类。 与附加器就可以既重映射什么附加目的地最终用于日志事件,而且还可以重新映射用于最终的日志事件级别的 - 例如,通过改变调试级别为INFO级别。
在的logback配置文件使用实例(取自https://github.com/spring-projects/spring-boot/blob/master/spring-boot/src/main/resources/org/springframework/boot/logging/logback/defaults .XML ):
<appender name="DEBUG_LEVEL_REMAPPER" class="org.springframework.boot.logging.logback.LevelRemappingAppender">
<!-- Optional: specify the destination logger the event ends up in -->
<destinationLogger>org.springframework.boot</destinationLogger>
<!-- Optional: specify log level remapping -->
<remapLevels>INFO->DEBUG,ERROR->WARN</remapLevels>
</appender>
<logger name="org.thymeleaf" additivity="false">
<appender-ref ref="DEBUG_LEVEL_REMAPPER"/>
</logger>
需要注意的是重新映射到特定目的地的记录器可以使它很难找到原来的日志事件的源代码 - 所以请小心使用。
你可以做的,是写第二记录器+附加器具有相同的输出:
<appender name="SYSLOG-2" class="ch.qos.logback.classic.net.SyslogAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
...
</appender>
<logger name="akka.some.Thing" level="DEBUG">
<appender-ref ref="SYSLOG-2" />
</logger>
这将增加你的特定调试任务,以相同的输出。