1

我使用 slf4j 1.7.2 和 logback 1.0.7。我希望能够为我的 Java 应用程序提供一个命令行参数,用于设置记录到标准输出的消息级别。例如,-logLevel trace应该记录所有消息,但-logLevel warning只记录警告和错误。日志应该来自应用程序中的所有记录器(= 根记录器)。

目前我有一个ConsoleAppenderfor System.out,通过 确保TresholdFilter只有info warningerror消息被打印到标准输出。根记录器引用它。我不知道如何以编程方式更改此附加程序的过滤级别,我需要将记录的级别基于命令行参数。

虽然记录到标准输出的级别应该受到影响,但我仍然希望根记录器记录所有级别,因为它们被发送到其他附加程序,例如diagnostics.txt应该始终具有所有级别的文件。

干杯!
康拉德

4

1 回答 1

2

Logback 的配置文件允许使用变量。您可以定义系统属性(JVM 的 -D 参数),并在配置文件中使用该值。语法是:

${VARIABLE_NAME}

您应该能够定义一个变量,例如 -DSYSOUT_LOG_LEVEL=ERROR 然后,在您的 logback.xml 文件中,您可以使用 ${SYSOUT_LOG_LEVEL},而不是为过滤器设置特定级别,例如

<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  <level>${SYSOUT_LOG_LEVEL}</level>
</filter>
于 2013-02-22T19:00:41.670 回答