Server Log Filter
Hide noisy server console lines from the MCDR console with configurable regex rules, without touching the server's own log file.
Installation command
!!MCDR plugin install server_log_filterAuthor
Repository
Synced at
...
Last update
...
Latest version
Total downloads
135
Back to catalogue
MCDR-ServerLogFilter
语言 / Language: 简体中文 | English
一个 MCDReforged 插件:把服务端反复刷屏的日志行只从 MCDR 控制台隐去;服务端自己的日志文件一条不少。
| 插件 ID | server_log_filter |
| 命令 | !!logfilter / !!lf |
| 需要 | MCDR 2.15.0+(实测 2.15.0 / 2.15.7 / 2.16.0;与 MC 版本无关) |
| License | MIT |
想改代码,或了解打包、测试与版本兼容性?见 docs/DEVELOPMENT.md。
目录
功能
- 按正则规则过滤服务端输出,命中的行只从 MCDR 控制台隐去;服务端自己写的
server/logs/latest.log一条不少 - 隐去的是控制台回显、不是丢弃:日志事件照常分发,不影响其它插件与 MCDR 的「开服完成 / 关服 / 玩家进出」判断
- 默认规则针对 Minecraft 26.3 的「standing on air」刷屏日志(官方误报,Mojira MC-311474 / MC-311727)
- 规则随时可增删改;
!!logfilter test <文本>先验证再启用,不必等它真的触发 - 规则连续多个开服周期零命中时提醒一次;载入时拦截有灾难性回溯风险的规则(跳过并警告,其余规则不受影响)
- 配置写坏会先备份成
config.json.old再重建;插件升级后新增选项自动补齐,你已有的取值不受影响 - 中英双语;命令全部需要管理员权限
安装
- 从 Releases 下载
ServerLogFilter-vX.Y.Z.mcdr,或自行打包(见 docs/DEVELOPMENT.md); - 放进 MCDR 的
plugins/目录; - MCDR 运行中执行
!!MCDR reload plugin server_log_filter,未运行则直接开服; - 首次启动自动生成
config/server_log_filter/config.json,默认配置开箱可用。
多个子服各放一份,配置互相独立。
命令
!!logfilter 与 !!lf 完全等价。所有命令都需要 MCDR 管理员权限(与游戏内 OP 无关:MCDR 只认自己的 permission.yml,未登记的玩家默认是 user)。给自己权限:在 MCDR 控制台执行 !!MCDR permission set <你的 ID> admin。
| 命令 | 作用 |
|---|---|
!!logfilter(= !!logfilter help) | 帮助页(游戏内聊天里每行可点击) |
!!logfilter list | 状态:当前语言与来源、每条规则的命中次数与连续零命中次数、被跳过的规则数 |
!!logfilter test <文本> | 测试一行日志是否会被隐去、命中的是哪条规则;整行粘贴也行(会按 MCDR 的规则剥掉 [时间] [线程/级别]: 前缀,以及玩家发言的 <玩家名> 前缀) |
!!logfilter reload | 重读配置立即生效,不必重启;已从配置中删除的规则的统计同时清除 |
!!logfilter reset | 清空「连续零命中」计数,重新开始观察 |
配置
配置文件是 config/server_log_filter/config.json,首次加载自动生成:
{
"language": "auto",
"patterns": [
"standing on air - force-sending blocks below"
],
"log_matched_lines": false,
"report_on_server_stop": true,
"warn_about_stale_rules": true,
"stale_rule_threshold": 3,
"validate_patterns": true,
"pattern_probe_timeout_ms": 25,
"announce_broken_config": true
}
展开选项与说明
| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
language | string | "auto" | 消息语言。auto 跟随 MCDR;也可写 zh_cn / en_us(大小写与 - / _ 随意;zh_tw 回落到 zh_cn,缺失的档位回落到 en_us) |
patterns | string[] | 见上 | 正则规则。对每行日志的正文(MCDR 已剥掉 [时间] [线程/级别]: 前缀)做匹配,命中即隐去 |
log_matched_lines | bool | false | 调试用:把被隐去的行以 INFO 级别写进 MCDR 日志,方便确认规则生效 |
report_on_server_stop | bool | true | 关服时在 MCDR 日志里汇总本次共隐去多少行 |
warn_about_stale_rules | bool | true | 某条规则连续多个开服周期零命中时提醒一次(只在成功开服的周期上计数) |
stale_rule_threshold | int | 3 | 连续多少个开服周期零命中才提醒;0 = 关闭这项提醒 |
validate_patterns | bool | true | 载入时用短探测串检查灾难性回溯,把这类规则拦下并跳过 |
pattern_probe_timeout_ms | int | 25 | 上项检查里单个探测串的耗时上限(毫秒):只影响插件加载与 !!logfilter reload 的耗时,与逐行过滤的开销无关(正常规则每行约 1 µs)。小于 1 按 1、大于 2000 按 2000,被钳制时在日志里 warning 一次。这个检查是启发式,拦不住所有病态正则(增长比低于阈值、或只在超长输入上才爆发的模式),详见 docs/DEVELOPMENT.md |
announce_broken_config | bool | true | 配置写坏被备份并重置时,在控制台说明原因与备份路径 |
匹配方式是 re.search(包含匹配),不是全匹配。 写 standing on air 就能命中整行,不必加 .*;反过来 . 匹配任意字符,要匹配字面点号请写 \.。
加规则:把日志正文追加进 patterns(其余字段保持原值),先 !!logfilter test <文本> 验证,再 !!logfilter reload:
{
"patterns": [
"standing on air - force-sending blocks below",
"Ignoring chat session from .* due to missing Services public key"
]
}
几条说明:
- 规则编译失败只会跳过该条并在日志里警告,其余规则照常工作;想临时关掉过滤,把
patterns清空再!!logfilter reload。 - 零命中统计存在
state.json(与config.json分开,插件不会改你写的配置);从配置里删掉规则,它的统计在reload时一并清除。 - 写坏配置时,原文件先被改名成
config.json.old再重建默认配置(备份只有这一个位置);文件不是 UTF-8 编码(比如被存成 ANSI)也算写坏。 warn_about_stale_rules/announce_broken_config两个播报开关只管说不说:备份、统计这些动作照旧执行。升级后新增的选项由 MCDR 自己补进配置文件(不播报)。- 想加一门语言:复制
en_us.json改成<语言代码>.json、只翻译取值,见server_log_filter/lang/README.md(不需要改代码)。
注意
- 过滤在 MCDR 这一侧完成(对服务端输出逐行匹配),与 MC 版本无关;默认规则只对 MC 26.3 的日志有意义,装在其它版本上插件照常工作,只是默认规则不会命中。
- 规则别写得太宽(如
.、.*、^),否则控制台会看起来像「服务端没在运行」;加载时有警告,!!logfilter list里也会标出。 - 查完整原始日志,永远看
server/logs/latest.log。
License
README source: https://raw.githubusercontent.com/Pau1am/MCDR-ServerLogFilter/main/README.md