log4j2记录器在一个类中使用时不写入日志,而在另一类中使用时不写入

问题描述 投票:-2回答:1

Apache log4j2记录器在一个类(服务器端)中运行时会打印到控制台,而不是文件。如果将同一记录器放置在其他(客户端)日志中,则按预期记录到文件。

log4j2.xml放置在正确的文件夹(即src \ main \ resources)中,并且适用于项目中的其他记录器。我不明白为什么记录器在一个类(客户端)中表现为一种方式,而在另一类(服务器端)中表现为另一种方式。

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>
java logging log4j2 minecraft minecraft-forge
1个回答
0
投票

只需添加

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

在vm Arguments中。

© www.soinside.com 2019 - 2024. All rights reserved.