Log4j2 ロガーがコンソールにのみ出力し、ファイルに書き込まないのはなぜですか?

Log4j2 ロガーがコンソールにのみ出力し、ファイルに書き込まないのはなぜですか?

Apache Log4j2 ロガーは、サーバー側で実行された場合、ファイルではなくコンソールに出力します。同じロガーをクライアント側に配置すると、期待どおりにファイルにログが記録されます。これはバージョン 1.7.10 では正常に動作しましたが、1.7.10 から 1.8.9 に移行すると、ロガーはファイルにログを記録せず、代わりにコンソールに出力します。

log4j2.xml は適切なフォルダ (つまり src\main\resources) に配置され、他のロガーでも機能します。ロガーがクライアント側で 1 つの動作をし、サーバー側で別の動作をするのはなぜかわかりません。

バージョン 1.7.10 から 1.8.9 のロガーで同様の問題が発生している人はいますか? これは、イベント登録のバス廃止と関係があるのでしょうか? ご協力いただければ幸いです。

ゲームロガー.java

public class GameLogger {

public static GameLogger INSTANCE = new GameLogger();
public static final Logger logger = LogManager.getLogger("MyGame");
@SubscribeEvent
public synchronized void onPlayerTick(final TickEvent.PlayerTickEvent tick) {
    if (tick.phase == Phase.END) {
        if (tick.player.isEntityAlive()) {  
                    logger.info("Logger is working");
                }
            }
        }
    }

ログ4j2.xml

<RollingRandomAccessFile name="StatsFile" fileName="logs/StatsFile-latest.log" filePattern="logs/StatsFile/%d{yyyy-MM-dd-HH}{GMT}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy/MM/dd HH:mm:ss}{GMT}%msg%n" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <OnStartupTriggeringPolicy />
            </Policies>
        </RollingRandomAccessFile>

<Logger level="info" name="MyGame" additivity="false">
            <AppenderRef ref="StatsFile" />
        </Logger>
        <Root level="all">
            <AppenderRef ref="FmlSysOut" level="INFO" />
            <AppenderRef ref="ServerGuiConsole" level="INFO" />
            <AppenderRef ref="FmlFile"/>
        </Root>

ロガーは、クライアント ティック ログ記録を使用して別のクライアント クラスに配置すると正常に動作します。期待どおりにログ ファイルに出力されますが、何らかの理由で、サーバー側クラスに配置すると、同じ動作は行われません。

答え1

追加する必要がありました

-Dlog4j.configurationFile=/src/main/resources/log4j2.xml

vm 引数内。

関連情報