【发布时间】:2014-07-02 07:41:24
【问题描述】:
有什么方法可以覆盖 logback 配置?我知道我们在名为logback.xml 的文件中定义了logback 配置(通常存储在路径src/main/resources 中),并且我知道通过使用<include> 标签我们可以设置一个要添加到logback.xml 的外部文件,如下所示:
<configuration>
<!--<include url="file:///d:/ServerConfig.xml"/>-->
<include file="${outPut}/ServerConfig.xml"/>
<logger name="Server" LEVEL="DEBUG">
<appender-ref ref="FILEOUT" />
</logger>
<root level="DEBUG">
<appender-ref ref="STDOUT" />
<!--<appender-ref ref="FILEOUT" />-->
</root>
</configuration>
但是如果我想覆盖这个默认配置怎么办?例如将根记录器级别设置为 INFO。
这是包含的文件:
<included>
<!-- <property file="d:/ServerSysVar.properties"/>-->
<property file="${outPut}/ServerSysVar.properties"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILEOUT" class="ch.qos.logback.core.FileAppender">
<file>${Sys_Location}/Serverfile4.log</file>
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} %class{36}.%M %L CLIENT_PORT:%X{ClientPort}- %msg%n</pattern>
</encoder>
</appender>
<logger name="Service" LEVEL="DEBUG">
<appender-ref ref="FILEOUT" />
</logger>
<root>
<appender-ref ref="STDOUT" />
<!-- <appender-ref ref="FILEOUT" />-->
</root>
</included>
【问题讨论】:
-
2011 年报告了一个错误,旨在通过使用系统属性覆盖配置来解决问题 - jira.qos.ch/browse/LOGBACK-239
-
该讨论表明作者非常固执,拒绝为一些学术废话而改变任何东西。我想知道这个实现怎么还活着?