我有一个 logback 配置,其中有一个带有阈值过滤器的附加程序:
<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
...
</appender>
这确保只有信息和更高级别(警告、错误)才会记录到系统日志中。但是,我们使用的第 3 方库之一正在调试时记录特定事件,我想将此事件记录到系统日志中。我想到的第一个方法是尝试重新映射记录器中的日志级别,但不确定这是否可能?就像是:
<logger name="akka.some.Thing" level="DEBUG" logAs="INFO">
<appender-ref ref="SYSLOG" />
</logger>
显然,“logAs”参数不存在,所以我不能这样做。将 akka.some.Thing 记录到 SYSLOG 附加程序,同时为其他记录器保留过滤器的最佳方法是什么?
另一种方法是创建一个名为 SYSLOG2 的第二个附加程序,它没有适当的过滤器,并设置特定的记录器来使用它,但想知道是否有一种方法可以仅使用 1 个 SYSLOG 附加程序来配置 logback...
Thanks,
看看org.springframework.boot.logging.logback.LevelRemappingAppender班级。 (请注意,它已从 Sprint Boot 中删除,但您仍然可以获取并使用其源代码。)
使用此附加程序,可以重新映射最终用于日志事件的附加程序,也可以重新映射用于最终日志事件的级别 - 例如通过将 DEBUG 级别更改为 INFO 级别。
示例 logback.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>
请注意,重新映射到特定目标记录器可能会使查找原始日志事件的源代码变得更加困难 - 因此请小心使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)