私は 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>
これら 2 つのクラス ConsoleMain と ClientMain で静的ロガーを介して何かをログに記録すると、
static Logger _logger = LogManager.getLogger(ClientMain.class.getName());
と
static Logger _logger = LogManager.getLogger(ConsoleMain.class.getName());
それらは常にルートロガーのアペンダーとレベルを使用します。上記のようにルート ロガーのレベルが「エラー」の場合、個々のロガーのレベルがデバッグであっても、デバッグ レベルのログ出力は表示されません。また、クラスのロガーで指定されたログ ファイルではなく、ルート ロガーで指定されたログ ファイルに常に追加されます。
そのため、ルートロガーが何らかの形ですべてをオーバーライドしているようです。クラスのアペンダーとロガーのレベルを実際に使用するようにlog4jを取得するにはどうすればよいですか?
ルートのアペンダーを削除しようとしましたが、何もログに記録されません。
ありがとうございました!