0

I use spring boot app, got duplicate Error level logs, so i added additivity="false" which blocks other two levels.

The config as below,

<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>

any suggestion?

Any suggestions? I tried to use in application.properties

parrotjack
  • 182
  • 2
  • 13

1 Answers1

0

i solved the problem, the log hierarchy caused the issue.

 <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>

and removed <appender name="WARN"

Because WARN level calls ERROR in hierarchy, for reference please check below url.

log4j logging hierarchy order

parrotjack
  • 182
  • 2
  • 13