首页 > 解决方案 > 禁用创建 logback 日志文件

问题描述

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

当我将 level 设置为root或将logger元素设置为OFF时,它不会记录,但仍会创建 appender 中指定的文件。

是否有禁用创建此文件的选项?(除了删除配置 xml 文件)

即使没有 logger(或 root)链接到 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> 

标签: javalogginglogback

解决方案


只要在配置中声明了文件 appender,Logback 就会创建 appender 类的实例并start()对其进行调用。你可以在AppenderAction.end(). 调用start()aFileAppender会导致 appender 的配置文件被创建,你可以在FileAppender.start().

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

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


推荐阅读