gpt4 book ai didi

java - 如何从包含的文件中删除/禁用/覆盖附加程序?

转载 作者:太空宇宙 更新时间:2023-11-04 09:20:54 25 4
gpt4 key购买 nike

我们使用 Spring Boot 并在 logback-spring.xml 文件中包含 org/springframework/boot/logging/logback/base.xml 。我需要覆盖根记录器以排除/禁用/覆盖包含文件中声明的附加程序,特别是 CONSOLE 附加程序(以及删除 FILE 附加程序)。

我尝试使用自己的 CONSOLE 附加程序在 logback-spring.xml 中声明根记录器,但这只会重复输出。我尝试声明一个空的根记录器(以设置不同的日志记录级别)和一个与包含的记录器同名的新附加器(“CONSOLE”),但这具有误导性(因为根记录器为空)并且仍然不会删除 FILE 附加器。

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 附加程序来覆盖包含的配置。

编辑:我的问题是关于从包含文件继承的附加程序,因此建议 Can I disable an appender in logback?并没有真正解决问题。

最佳答案

似乎没有办法删除/覆盖附加程序。然而根据这个http://logback.qos.ch/codes.html#earlier_fa_collision

If a FileAppender/RollingFileAppender defined earlier has the same File option as the current appender, then those two appenders are in collision as FileAppender instances cannot share the same output target. To prevent loss of data, the current appender will not start. Make sure that each appender has a unique File option.

可以禁用附加程序。然而,这种方式更像是一种黑客行为,而不是一个正确的解决方案。

关于java - 如何从包含的文件中删除/禁用/覆盖附加程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58337152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com