如何在logback.xml中使用变量设置根日志级别?
How to use a variable to set the root log level in logback.xml?
我正在尝试使用环境变量 ROOT_LOG_LEVEL
来控制使用 logback.xml
配置文件的项目的根日志级别。
<configuration>
<!-- You can override these with environment variables -->
<variable name="ROOT_LOG_LEVEL" value="$ROOT_LOG_LEVEL:-INFO" />
<variable name="EXAMPLE_LOG_LEVEL" value="$EXAMPLE_LOG_LEVEL:-INFO" />
<logger name="com.example" level="$EXAMPLE_LOG_LEVEL" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%level - %message</pattern>
</encoder>
</appender>
<root level="$ROOT_LOG_LEVEL">
<appender-ref ref="STDOUT" />
</root>
</configuration>
使用此配置,我可以通过设置环境变量(例如 EXAMPLE_LOG_LEVEL=TRACE
)或不设置变量并回退到默认 com.example
包的日志级别=16=].
虽然这适用于 com.example
,但不适用于根记录器。当我尝试在 level="$ROOT_LOG_LEVEL"
中使用变量时,无论变量的内容如何,它都会退回到内部默认值 DEBUG
。仅当我将 $ROOT_LOG_LEVEL
替换为 INFO
等显式值时,根记录器才会更改。
有没有办法根据变量设置根日志级别?
显然,我的问题的答案是 Logback 不接受这样的变量:
<variable name="ROOT_LOG_LEVEL" value="$ROOT_LOG_LEVEL:-INFO" />
<root level="$ROOT_LOG_LEVEL">
改为使用:
<variable name="ROOT_LOG_LEVEL" value="${ROOT_LOG_LEVEL:-INFO}" />
<root level="${ROOT_LOG_LEVEL}">
行得通!请注意 :-INFO
必须在大括号内。
我正在尝试使用环境变量 ROOT_LOG_LEVEL
来控制使用 logback.xml
配置文件的项目的根日志级别。
<configuration>
<!-- You can override these with environment variables -->
<variable name="ROOT_LOG_LEVEL" value="$ROOT_LOG_LEVEL:-INFO" />
<variable name="EXAMPLE_LOG_LEVEL" value="$EXAMPLE_LOG_LEVEL:-INFO" />
<logger name="com.example" level="$EXAMPLE_LOG_LEVEL" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%level - %message</pattern>
</encoder>
</appender>
<root level="$ROOT_LOG_LEVEL">
<appender-ref ref="STDOUT" />
</root>
</configuration>
使用此配置,我可以通过设置环境变量(例如 EXAMPLE_LOG_LEVEL=TRACE
)或不设置变量并回退到默认 com.example
包的日志级别=16=].
虽然这适用于 com.example
,但不适用于根记录器。当我尝试在 level="$ROOT_LOG_LEVEL"
中使用变量时,无论变量的内容如何,它都会退回到内部默认值 DEBUG
。仅当我将 $ROOT_LOG_LEVEL
替换为 INFO
等显式值时,根记录器才会更改。
有没有办法根据变量设置根日志级别?
显然,我的问题的答案是 Logback 不接受这样的变量:
<variable name="ROOT_LOG_LEVEL" value="$ROOT_LOG_LEVEL:-INFO" />
<root level="$ROOT_LOG_LEVEL">
改为使用:
<variable name="ROOT_LOG_LEVEL" value="${ROOT_LOG_LEVEL:-INFO}" />
<root level="${ROOT_LOG_LEVEL}">
行得通!请注意 :-INFO
必须在大括号内。