Por que o logger Log4j2 imprime apenas no console e não grava em um arquivo?

Por que o logger Log4j2 imprime apenas no console e não grava em um arquivo?

O logger Apache Log4j2 é impresso no console e não no arquivo quando executado no lado do servidor. O mesmo criador de logs, se colocado no lado do cliente, registra no arquivo conforme esperado. Isso funcionou bem na versão 1.7.10, mas quando fez a transição de 1.7.10 para 1.8.9, o criador de logs não registra mais no arquivo, mas imprime no console.

O log4j2.xml é colocado na pasta correta (ou seja, src\main\resources) e funciona para outros criadores de logs. Não entendo por que o logger se comporta de uma maneira no lado do cliente e de outra no lado do servidor.

Alguém está enfrentando um problema semelhante com o logger da versão 1.7.10 a 1.8.9? Isso tem alguma coisa a ver com a descontinuação do ônibus para registro de eventos? Qualquer ajuda é apreciada.

GameLogger.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");
                }
            }
        }
    }

log4j2.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>

O logger funciona bem se eu colocá-lo em uma classe de cliente separada com registro de ticks do cliente. Ele imprime no arquivo de log conforme esperado, mas por algum motivo não faz o mesmo quando colocado na classe do lado do servidor.

Responder1

Só faltou adicionar

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

nos argumentos vm.

informação relacionada