禁用创建回退日志文件

时间:2018-08-28 13:58:42

标签: java logging logback

是否可以禁用创建注销日志文件?

当我将级别设置为 root 或将 logger 元素设置为 OFF 时,它将不会记录日志,但仍会创建添加程序中指定的文件。

是否可以选择禁用创建此文件? (除了删除配置xml文件)

即使没有记录器(或根目录)链接到附加程序,仍然会创建来自附加程序的日志文件。

谢谢。

================================================ =========================== 编辑。我要附加我的配置:

<?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> 

1 个答案:

答案 0 :(得分:1)

只要在配置中声明了文件附加程序,Logback就会创建附加程序类的实例并在其上调用start()。您可以在AppenderAction.end()中看到此内容。在start()上调用FileAppender将导致创建附加程序的配置文件,您可以在FileAppender.start()中看到此行为。

因此,要完全禁用文件输出附加程序,必须确保未在Logback配置中声明它。

也许您正在寻找某种方法来将文件输出附加器标记为无操作,即,没有要向其发出事件的信息,也没有要创建的文件。使用Logback的FileAppender当前实现(和子类),无法将附加程序标记为完全无操作。要实现此目的,您需要提供自己的FileAppender子类并覆盖start()