我可以在logback中禁用appender吗?

时间:2013-11-11 18:22:28

标签: logging logback

我可以在xml配置的logback中禁用appender吗? 我有我的配置,我想放两个appender,一个用于数据库,另一个用于文本日志,但只有一个必须激活。 谢谢!

2 个答案:

答案 0 :(得分:10)

不确定为什么要停用appender,你想通过禁用来实现什么。

有一些方法可以实现它

  1. 在logback.xml中添加appender并对其进行注释。当你喜欢 启用它然后取消注释appender并重新加载logback 组态 (http://logback.qos.ch/manual/configuration.html#autoScan
  2. 添加如下所示的记录器并使用适当的记录器进行记录
  3.     <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>   
    

    在这种情况下,您还必须在修改Logback配置时重新加载配置     (logback.xml)

    1. 如果您事先了解条件(激活/停用),请使用if else阻止启用/禁用
    2. 除了以上3个选项之外,您还可以手动创建回溯配置

答案 1 :(得分:0)

为附加程序选择日志记录级别的简单方法是使用ThresholdFilter,例如:

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

要激活特定的附加程序时,应使用适当的-D选项运行jvm。对于上面定义的附加器,将为:

java -Dlogging.appender.console.level=DEBUG

当然,如果您激活自动配置重新加载(http://logback.qos.ch/manual/configuration.html#autoScan),则可以在应用运行时更改过滤器级别。

当您不想每次启动应用程序(具有不同的日志记录级别)时都不想更改登录配置文件时,我建议的方法很方便。您只需运行带有相应-D选项的jvm即可设置在logback配置中使用的属性。