我对 Log4j 2 比较陌生。目前,我有这个配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<File name="DebugFile" fileName="../../logs/debug.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
<File name="BenchmarkFile" fileName="../../logs/benchmark.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Logger name="com.messaging.main.ConsoleMain" level="debug">
<AppenderRef ref="DebugFile"/>
</Logger>
<Logger name="com.messaging.main.ClientMain" level="debug">
<AppenderRef ref="BenchmarkFile"/>
</Logger>
<Root level="error">
<AppenderRef ref="DebugFile"/>
</Root>
</Loggers>
</Configuration>
如果我通过静态 Logger 在这两个类 ConsoleMain 和 ClientMain 中记录一些东西
static Logger _logger = LogManager.getLogger(ClientMain.class.getName());
和
static Logger _logger = LogManager.getLogger(ConsoleMain.class.getName());
他们总是使用根记录器的附加程序和级别。如果根记录器的级别为“错误”,则它永远不会显示任何调试级别的日志输出,即使单个记录器的级别是调试。此外,它始终附加到根记录器中指定的日志文件,而不是类记录器中指定的日志文件。
因此,似乎根记录器以某种方式覆盖了所有内容。如何让 log4j 实际使用附加程序和类记录器的级别?
我尝试删除根的附加程序,但它没有记录任何内容。
谢谢!