【问题标题】:Logback Spring Block Log Level in Additivity可加性中的 Logback Spring 块日志级别
【发布时间】:2020-07-18 09:53:06
【问题描述】:

我使用 spring boot 应用程序,得到重复的错误级别日志,所以我添加了 additivity="false",它阻止了其他两个级别。

如下配置,

<configuration>

    <property resource="application.properties" />

    <springProperty scope="context" name="uuid" source="uuid"/>
    <springProperty scope="context" name="environment" source="label"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
            </Pattern>
        </layout>
    </appender>

    <appender name="ERROR" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>${logging.console.level:-ERROR}</level>
        </filter>

        <filter class="com.sample.ErrorFilter">
            <criticalUUID>${uuid}</criticalUUID>
            <criticalEnvironment>${environment}</criticalEnvironment>
        </filter>
    </appender>

    <appender name="WARN" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>${logging.console.level:-WARN}</level>
        </filter>

        <filter class="com.sample.WarningFilter">
            <warningUUID>${uuid}</warningUUID>
            <warningEnvironment>${environment}</warningEnvironment>
        </filter>
    </appender>

    <root level="DEBUG">
        <appender-ref ref="ERROR"/>
        <appender-ref ref="WARN"/>
        <appender-ref ref="STDOUT"/>
    </root>

    <logger name="com.refinitiv" level="ERROR" additivity="false">
        <appender-ref ref="ERROR" />
    </logger> 


</configuration>

有什么建议吗?

有什么建议吗?我尝试在 application.properties 中使用

【问题讨论】:

  • 为什么要使用 XML 配置?
  • 这是一个现有的设计,我需要增强一些水平。只是好奇,XML 和 application.properties 的使用有什么显着差异吗?
  • 据我所知,不需要 XML。 application.properties 是有限的。所以如果你想做一些高级的东西,你需要 XML
  • XML内部使用了编码器,调用doLayout()。

标签: spring-boot slf4j spring-logback


【解决方案1】:

我解决了这个问题,日志层次结构导致了这个问题。

 <appender name="ERROR" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>${logging.console.level:-WARN}</level>
        </filter>

        <filter class="com.sample.ErrorFilter">
            <criticalUUID>${uuid}</criticalUUID>
            <criticalEnvironment>${environment}</criticalEnvironment>
        </filter>
    </appender>

并删除了&lt;appender name="WARN"

由于WARN级别在层次结构中调用ERROR,参考请查看下面的url。

log4j logging hierarchy order

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-11
    • 2021-09-16
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 2016-08-06
    相关资源
    最近更新 更多