logback

Logback Do not inherit root appenders


I have a logback config where I have one logger that should not inherit the syslog appender that has been added to the root logger. I can't find anywhere in the documentation how to do this.

<root level="DEBUG">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
    <appender-ref ref="SYSLOG" />
</root>

<logger name="jsonlogger" level="INFO">
    <appender-ref ref="SYSLOGJSON" />
</logger>

In this example, I do not want jsonlogger to inherit the syslog appender-ref from root.


Solution

  • Turn off additivity (default true) for your logger:

    <logger name="jsonlogger" level="INFO" additivity="false">
        <appender-ref ref="SYSLOGJSON" />
    </logger>
    

    As the logback-manual describes: http://logback.qos.ch/manual/configuration.html#overridingCumulativity

    If you just want it to not have the SYSLOG appender but FILE and STDOUT, you'll have to register those at the logger itself as well.