我在两个独立的包中分别有两个类MyClass1和MyClass2,分别是package1和package2。这些类旨在单独使用,不会跨包进行交互。
现在,对于日志记录,我在log4j2配置中配置了两个FastFileAppender(每个都写入MyClass1.log和MyClass2.log)。我有两个记录器(名称= package1和package2),每个记录器都引用自己的文件appender。 我面临的问题是,如果我运行MyClass1,那么记录器会创建两个日志文件(其中一个是MyClass2.log)为空。
有没有办法告诉管理器只实例化使用过的appender,这样就不会创建额外的空文件?
下面是我的log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<FastFile name="file1" fileName="MyClass1.log" append="false">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</FastFile>
<FastFile name="file2" fileName="MyClass2.log" append="false">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</FastFile>
</appenders>
<loggers>
<root level="INFO">
<appender-ref ref="Console" />
</root>
<logger name="package1" level="TRACE"
additivity="false">
<appender-ref ref="Console" level="INFO" />
<appender-ref ref="file1" level="TRACE" />
</logger>
<logger name="package2" level="TRACE"
additivity="false">
<appender-ref ref="Console" level="INFO" />
<appender-ref ref="file2" level="TRACE" />
</logger>
</loggers>
</configuration>