Server Log Filter

Hide noisy server console lines from the MCDR console with configurable regex rules, without touching the server's own log file.

management

Installation command

!!MCDR plugin install server_log_filter

Author

Synced at

...

Last update

...

Latest version

Total downloads

136

Back to catalogue

ServerLogFilter-v1.4.2.mcdr

Version

1.4.2

Date

October 14, 2026

Size

24.45 KiB

Downloads

7

MD5

8a1a5fcbc0ffb334c3626c4864286d5f

SHA256

4d6afca4c26133332327a174a6acc1444340f58a3f4a045f472a8f13e9d234fc

MCDR Plugin Dependencies

Plugin IDRequirement
mcdreforged>=2.15.0

Python Package Requirements

Python PackageRequirement

none

Changelog

本插件所有值得一提的变更都记录在此。插件包内也附带同一份 CHANGELOG.md。

格式参考 Keep a Changelog,版本号遵循 语义化版本。

本文件只保留最新一个版本的条目,更早版本的记录见 GitHub Releases。


[1.4.2] - 2026-10-14

修复

  • 一行命中多条规则时,每条规则都计数。 以前只给第一条计数,被它遮蔽的那条命中数永远是 0,连续几轮之后会被报成「从未命中」并建议删除——而它其实一直在正常工作,删掉后对应日志会立刻重新刷屏。!!logfilter test 一直说它会命中,两屏结论互相矛盾;现在两个口径一致。
  • 正则安全探测不再有量级盲区。 探测串原来固定 22 字符,(a|aa)+$ 这类只在更长输入上爆炸的模式能通过检查,而它在 60 字符以上的真实日志行上会让 MCDR 主线程卡死(filter_server_info 跑在主线程)。现在先用两档长度的增长比判断,再用接近真实行长的长档做绝对耗时兜底。
  • on_server_startup 补上配置判空。 MCDR 低于 2.15.0 时插件会停用并提示升级,但此后每次开服完成仍会抛一次 AttributeError(提示与报错自相矛盾)。
  • 类型写坏的配置也会被备份。 以前只有「JSON 语法错 / 顶层不是对象 / 不是 UTF-8」会备份成 config.json.old 并播报;合法 JSON 但字段类型写错(例如 stale_rule_threshold 填成字符串)会被 MCDR 用默认值覆盖,用户写的 patterns 就此消失且没有备份。
  • 未走到启动完成的周期不再让已修好的规则被重复告警。 到期提醒的判据加上「本轮该规则一次都没命中」,文案从「连续 N 次零命中」改为「从未命中」。
  • state.json 损坏时备份并说明(以前会被静默重置,命中历史无声消失);_state 的读改写加锁。
  • !!logfilter reload 失败时给可读回复(此前只有一条 traceback);!!lf test 只粘了行前缀时不再把带前缀的原文当正文,^ 锚定的规则不会再被误报成不命中。
  • 探测预算被钳制时会 warning 一次(下限 1 ms、上限 2000 ms)。

新增

  • 状态页新增一行计数口径说明(一次隐去可能来自多条规则,两者数字不必相加)。
  • 「匹配一切」的判定改用补集判据,^$ 这类只匹配空行的规则也会被警告。

变更

  • pattern_probe_timeout_ms 的语义在 README 里写明:它只影响插件加载与 !!logfilter reload 的耗时,与逐行过滤开销无关;这个检查是启发式,不是形式化保证。
  • 从写坏的配置原文里抢救 language 时同时接受单引号写法。
  • 版本号 1.4.1 → 1.4.2。

开发

  • CI 新增三个作业:lint(ruff 0.17.0,规则见根目录 ruff.toml)、跨版本矩阵(真实 MCDR 2.15.0 / 2.15.7 / 2.16.0)、产物自检(tools/check_artifact.py);单元测试矩阵新增 Python 3.9(该档装 pytest 8.3.5,因为 pytest 9 需要 3.10)。
  • 打包器换行归一:CRLF 工作区与 LF 工作区打出的字节相同,包内 CHANGELOG.md 只保留最新一节且版本号必须与元数据一致。
  • 变异检查改造:隔离字节码缓存、区分 failed 与 error、打印变异后文件的 sha256、失败时保留临时目录。
  • 清掉测试里 13 处歧义变量名与 1 处错位的 import,ruff check . 归零。

验证

  • 测试 378 项全部通过(单元 340 + 真实 MCDR 端到端 37)。
  • 变异检查 58 条全部被抓(tools/mutation_check.py)。
  • 真实 MCDR 2.15.0 / 2.15.7 / 2.16.0 三版本矩阵逐项一致,无 traceback。
  • 产物可复现、换行归一、包内无注释与 docstring、包内代码可编译。