Why Log4j2 logger only prints to console and not write to a file?

Apache Log4j2 logger prints to console not to file when run on the server-side. The same logger, if placed on the client-side, logs to file as expected. This worked fine on version 1.7.10 but when transitioned from 1.7.10 to 1.8.9, the logger no longer logs to file but prints to console instead.

The log4j2.xml is placed in the right folder(i.e. src\main\resources) and works for other loggers. I don't understand why the logger behaves one way on the client-side and another way on the server-side.

Is anyone facing a similar issue for the logger from version 1.7.10 to 1.8.9? Does this have anything to do with the bus deprecation for event registration? Any help is appreciated.

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>

The logger works fine if I place it in a separate client class with client tick logging. It prints to log file as expected, but for some reason does not do the same when placed on server-sided class.

1 Answer

Just needed to add

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

in the vm Arguments.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like