You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Log4j中过滤Minecraft服务器Jar包输出的指定控制台异常

解决Minecraft服务器屏蔽com.mojang.brigadier.exceptions.CommandSyntaxException异常日志的方法

一、正确的Jar包启动参数

Minecraft服务器使用的是Log4j 2,你之前用的-Dlog4j.configuration是旧版Log4j 1.x的参数,这是配置无效的核心原因之一。替换为Log4j 2的专用参数即可:

java -Dlog4j.configurationFile=/home/container/console.xml -Xms128M -XX:MaxRAMPercentage=95.0 -jar server.jar
  • 若不需要调试Log4j自身,可去掉-Dlog4j.debug参数,减少冗余输出

二、正确的Log4j 2 XML配置文件

你之前的配置仅包含Appenders节点,缺少Log4j必需的Configuration根节点和Loggers映射规则,导致配置完全不生效。以下是完整的可生效配置:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <!-- 控制台输出:屏蔽目标异常,保留其他正常日志 -->
        <Console name="Console" target="SYSTEM_OUT">
            <RegexFilter regex=".*com\.mojang\.brigadier\.exceptions\.CommandSyntaxException.*" onMatch="DENY" onMismatch="ACCEPT"/>
            <PatternLayout pattern="[%d{HH:mm:ss}] [%t/%level]: %msg%n"/>
        </Console>
        <!-- 可选:日志文件输出,保留完整日志用于排查问题 -->
        <File name="LogFile" fileName="logs/latest.log">
            <PatternLayout pattern="[%d{HH:mm:ss}] [%t/%level]: %msg%n"/>
        </File>
    </Appenders>
    <Loggers>
        <!-- 根日志器:关联控制台和文件输出 -->
        <Root level="info">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="LogFile"/>
        </Root>
        <!-- 进阶优化:若明确是某插件导致异常,可直接限制该插件日志级别 -->
        <!-- <Logger name="插件完整包名" level="error" additivity="false">
            <AppenderRef ref="Console"/>
        </Logger> -->
    </Loggers>
</Configuration>

配置关键说明

  • RegexFilter:通过正则精准匹配包含目标异常类的日志行,onMatch="DENY"表示匹配到的日志直接拒绝输出,onMismatch="ACCEPT"保证其他正常日志正常显示
  • 保留文件日志输出是为了后续排查问题,若不需要可直接删除<File>节点和对应的<AppenderRef ref="LogFile"/>
  • 若知道触发异常的插件包名,使用注释中的Logger配置可以更精准地限制日志输出,比正则过滤效率更高

内容的提问来源于stack exchange,提问作者OnlyTheBest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 21:57:13