java - logback加载所有附加程序

  显示原文与译文双语对照的内容
0 0

我有一个 logback.xml 文件,其中包含 3个附加文件: 1 ConsoleAppender和 2 FileAppender

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
 <Target>System.out</Target>
 <encoder>
 <pattern>[%d{yyyy-MM-dd HH:mm:ss}] %msg%m%n%ex</pattern>
 </encoder>
 </appender>
 <appender name="bAppender" class="ch.qos.logback.core.FileAppender">
 <file>logs/b.txt</file>
 <append>true</append>
 <encoder>
 <pattern>[%d{yyyy-MM-dd HH:mm:ss}] -[%t] %-4r %-5p %c : %n%m%n</pattern>
 </encoder>
 </appender>
 <appender name="aAppender" class="ch.qos.logback.core.FileAppender">
 <file>logs/a.txt</file>
 <append>false</append>
 <encoder>
 <pattern>[%d{dd/MM/yyyy : HH:mm:ss} %level - %logger] %m%n</pattern>
 </encoder>
 </appender>
 <logger name="aLogger" additivity="false">
 <level value="DEBUG"/>
 <appender-ref ref="aAppender"/> 
 </logger>
 <root level="info">
 <appender-ref ref="stdout"/>
 </root>
</configuration>

问题是当我启动与aLogger相关的程序时 (Logger LOGGER = LoggerFactory.getLogger("aLogger"); 添加 bAppend ( 以及创建一个空的b.txt 文件。)

它就像logback调用,当一个logger被调用时执行所有的附加器,而不管附加的附加器。 如何避免这种行为?

十分 感谢

时间:原作者:1个回答

0 0

简而言之,我认为答案是'没有',没有办法阻止 b.txt 被创建。 看看 FileAppender的源代码,当启动( 当logback初始化时发生) 时,就会创建输出文件( 。相应的父文件夹层次结构) 。 这种设计是有意的,因为这种方法在记录过程中会节省相当长的时间。

原作者:
...