java - 禁用创建 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>
解决方案
只要在配置中声明了文件 appender,Logback 就会创建 appender 类的实例并start()
对其进行调用。你可以在AppenderAction.end()
. 调用start()
aFileAppender
会导致 appender 的配置文件被创建,你可以在FileAppender.start()
.
因此,为了完全禁用文件输出附加程序,您必须确保它没有在 Logback 配置中声明。
也许您正在寻找某种方法来将您的文件输出附加程序标记为无操作,即不向其发送事件并且不创建文件。没有办法 - 使用 Logback 的当前实现(和子类)FileAppender
- 将 appender 标记为完全无操作。要实现这一点,您需要提供自己的子类FileAppender
和覆盖start()
。
推荐阅读
- html - 即使我为我的 div 父级设置了固定宽度,水平滚动条也不起作用?
- kotlin - 如何在工作线程上启动惰性初始化
- c++ - 检索文件时出现随机 http 400 错误
- node.js - 将变量渲染到 ejs 模板?
- python - 执行蒙特卡罗方法以找到 f 的最小值
- javascript - 无法在 Javascript 中拆分字符串
- ruby-on-rails - 如何为 ios “构建 Turbolinks.framework”?
- asp.net-web-api - 如何在 ASP API 中将参数从 JS 传递给 Controller
- php - 使用内置 PHP 服务器为 Slim 应用程序 v3 提供静态文件
- macos - 运行私有 docker 映像时出错:standard_init_linux.go:207: exec 用户进程导致“exec 格式错误”