Java 禁用创建日志文件
是否可以禁用创建回写日志文件 当我将level设置为root或loggerelements设置为OFF时,它不会记录,但仍会创建appender中指定的文件 是否有禁用创建此文件的选项?(除删除配置xml文件外) 即使没有指向appender的记录器(或根)链接,appender中的日志文件仍然会创建 多谢各位 =========================================================================== 编辑我正在附加我的配置:Java 禁用创建日志文件,java,logging,logback,Java,Logging,Logback,是否可以禁用创建回写日志文件 当我将level设置为root或loggerelements设置为OFF时,它不会记录,但仍会创建appender中指定的文件 是否有禁用创建此文件的选项?(除删除配置xml文件外) 即使没有指向appender的记录器(或根)链接,appender中的日志文件仍然会创建 多谢各位 =========================================================================== 编辑我正在附加我的配置: <
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<variable name="LOG_LEVEL" value="${mylevel:-TRACE}" />
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${clogdir}/mylog.log</file>
<append>true</append>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d %p %t %c - %m%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${clogdir}/mylog.log.%d{yyyy-MM-dd}</fileNamePattern>
</rollingPolicy>
</appender>
<root level="${LOG_LEVEL}">
<appender-ref ref="FILE" />
</root>
<appender name="log2" class="ch.qos.logback.core.FileAppender">
<file>${clogdir}/log2.log</file>
<append>true</append>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d %p %t %c - %m%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${clogdir}/log2.log.%d{yyyy-MM-dd}</fileNamePattern>
</rollingPolicy>
</appender>
<logger name="log2" level="TRACE">
<appender-ref ref="log2" />
</logger>
</configuration>
${clogdir}/mylog.log
真的
%d%p%t%c-%m%n
${clogdir}/mylog.log.%d{yyyy-MM-dd}
${clogdir}/log2.log
真的
%d%p%t%c-%m%n
${clogdir}/log2.log.%d{yyyy-MM-dd}
只要在配置中声明了文件appender,那么Logback将创建appender类的实例,并在其上调用start()
。你可以从中看到这一点。在FileAppender
上调用start()
因此,为了完全禁用文件输出附加器,您必须确保它没有在您的Logback配置中声明
也许您正在寻找某种方法,将文件输出附加器标记为无操作,即无需向其发出事件和无需创建文件。使用Logback当前的FileAppender
实现(以及子类),无法将appender标记为完全不可操作。要实现这一点,您需要提供自己的FileAppender
子类并覆盖start()
我已附加了日志文件。仅当我指定根记录器时才应创建它。现在我只能通过将log_LEVEL设置为OFF来告诉它不要附加日志行。但是仍然创建了myLog.log文件。即使我将
更改为
。每次都会创建日志2,没关系。抱歉,我已经更新了答案,结果证明,只要在配置中包含appender(不管该appender是否被日志记录器引用),就足以创建appender的文件。谢谢您的回答。是否可以在配置中引用其他xml?我正在考虑在其他xml文件中定义appender,然后仅在需要时引用它的可能性。您可以使用启用/禁用文件appender。通过这种方式,您可以有一个logback.xml文件,但根据JVM系统参数的值等条件,有两种不同的行为,例如,-Denable.file.output=true | false
,效果非常好。非常感谢:)