我们正在使用 Spring Boot,并且在我们的 logback-spring.xml 文件中包含 org/springframework/boot/logging/logback/base.xml。我需要覆盖根记录器以排除/禁用/覆盖在包含文件中声明的附加程序,特别是 CONSOLE 附加程序(好吧,并删除 FILE 附加程序)。
我尝试使用自己的 CONSOLE 附加程序在 logback-spring.xml 中声明一个根记录器,但这只会复制输出。我已经尝试声明一个空的根记录器(以设置不同的日志记录级别)和一个与包含的同名的新附加程序(“CONSOLE”),但这是误导性的(因为根记录器是空的)并且仍然没有删除文件附加程序。
logback-spring.xml 的误导版本
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration scan="true">
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<!-- bunch of loggers -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<root level="ERROR">
</root>
</configuration>
我期望的是这样的:
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<appender name="CUSTOM-CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<root level="ERROR">
<appender-ref ref="CUSTOM-CONSOLE"/>
</root>
然后不使用包含的 CONSOLE 和 FILE 附加程序。
或者可能重新声明一些虚拟/无操作 CONSOLE 和 FILE 附加程序以覆盖包含的配置。
编辑:我的问题是关于从包含文件继承的附加程序,因此建议在我可以在 logback 中禁用附加程序吗?不要真正解决这个问题。