【发布时间】:2013-12-26 01:21:07
【问题描述】:
I choose a log appender dynamically by using a Java system property这样的
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</layout>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<prudent>true</prudent>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logLocation}/%d{yyyyMMdd}.%i.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="${logAppender:-STDOUT}" />
</root>
</configuration>
如您所见,logAppender 变量的默认值为STDOUT。
问题是即使选择了STDOUT appender,FILE appender 也会被实例化并继续在项目的根目录上创建logLocation_IS_UNDEFINED/%d{yyyyMMdd}.%i.log 文件。
我可以阻止FILE appender 的实例化,以免产生无用的目录和文件吗?
【问题讨论】:
标签: java logging log4j logback