Can I disable an appender in logback?

前端 未结 2 1917
误落风尘
误落风尘 2020-12-09 10:47

Can I disable an appender in logback on the xml config? I have my configuration and I want to put two appenders, one for database and other for text logs, but only one must

相关标签:
2条回答
  • 2020-12-09 11:03

    Not sure why you want to deactivate an appender, what are you trying to achieve by disabling.

    There are some ways to achieve it

    1. Add the appender in logback.xml and keep it commented. When you like to enable it then uncomment the appender and reload logback configuration (http://logback.qos.ch/manual/configuration.html#autoScan)
    2. Add a logger like the one given below and use appropriate logger for logging
        <configuration>
          <appender name="stdoutappender" />
          <appender name="dbappender" />
          <logger name="stdoutlogger" level="DEBUG">
            <appender-ref ref="stdoutappender" />
          </logger>
    
          <logger name="dblogger" level="OFF">
            <appender-ref ref="dbappender" />
          </logger>
        </configuration>   
    

    In this case also you have to reload the configuration when you modify logback configuration (logback.xml)

    1. If you know the conditions (to activate/deactivate) beforehand then use if else block to enable/disable

    On top of above 3 options you can create logback configurations progamatically

    0 讨论(0)
  • 2020-12-09 11:14

    The easy way to choose a logging level for an appender is to use a ThresholdFilter, e.g.:

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

    When you want to activate a particular appender you should run your jvm with an appropriate -D option. For the appender defined above it would be:

    java -Dlogging.appender.console.level=DEBUG
    

    Of course if you activate automatic configuration reloading (http://logback.qos.ch/manual/configuration.html#autoScan) you can change filter level while the app is running.

    The approach I've proposed is convenient when you don't want to change your logback config file every time you start the app (with different logging levels). You simply have to set properties used in logback config by running jvm with corresponfing -D options.

    0 讨论(0)
提交回复
热议问题