18

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

4

2 回答 2

14

不知道为什么要停用附加程序,您要通过禁用来实现什么。

有一些方法可以实现它

  1. 在 logback.xml 中添加 appender 并保持注释。当您想启用它时,请取消注释附加程序并重新加载 logback 配置(http://logback.qos.ch/manual/configuration.html#autoScan
  2. 添加如下所示的记录器并使用适当的记录器进行记录
    <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 block 启用/禁用

在上述 3 个选项之上,您可以以编程方式创建 logback 配置

于 2013-11-26T05:45:06.530 回答
8

为 appender 选择日志级别的简单方法是使用 a 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。对于上面定义的 appender,它将是:

java -Dlogging.appender.console.level=DEBUG

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

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

于 2019-02-25T10:46:14.003 回答