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

44

Back to catalogue

ServerLogFilter-v1.4.0.mcdr

Version

1.4.0

Date

October 4, 2026

Size

19.30 KiB

Downloads

4

MD5

c1d2c01707143620cfb4eebc8ad31c26

SHA256

6f8b361ac5fe0e9fa98de393b10477ebb8d33071c048b71d49e767b81c900997

MCDR Plugin Dependencies

Plugin IDRequirement
mcdreforged>=2.15.0

Python Package Requirements

Python PackageRequirement

none

一句话

命令面有了简写与帮助页、全部限管理员;两个界面重做成同一套外观;包体积减少 37%。


修复 / 新增

1. 命令有了简写:!!lf

!!lf 与 !!logfilter 完全等价,两种拼法都登记进了 MCDR 的 !!help。

实现上它们是同一个命令节点的两条字面量,不是两棵复制出来的命令树——后者迟早会漂移成两种行为。

之前 !!lg 用不了,是因为别名是 !!lf(l + f)。

2. 新增帮助页

直接输入 !!logfilter(或 !!lf)就会看到命令列表;!!logfilter help 是同一屏。

============  Server Log Filter v1.4.0  ============
用法: !!logfilter <子命令>(!!lf 亦可)
以上命令均需管理员权限(MCDR 的权限与游戏内 OP 无关)
!!lf help   -- 显示本帮助
!!lf list   -- 查看状态
!!lf test   -- 测试某行是否会被隐去
!!lf reload -- 重读配置并立即生效
!!lf reset  -- 清空零命中计数
  • 顶栏两侧等号按标题长度自动补齐到约一行宽(53 列,MC 聊天默认字体), 插件名 aqua、版本号 yellow——换版本号也不会破坏对称。
  • 命令排成一列对齐,说明文字不因子命令长短而左右乱跳。
  • 配色统一为:命令 aqua、说明 white、分隔符 gray、权限提醒 yellow。 界面里不再出现深灰字——管理员多半在深色终端上看,深灰字几乎看不见。
  • 帮助页不再重复状态页那句运行提示(「服务端日志不受影响」之类):这屏是命令清单, 运行时的注意事项留在状态页。

3. 帮助行可点击(游戏内聊天)

点一下等于敲了那行命令。test 是例外:它还要跟一段日志文本,直接执行没有意义, 所以只把 !!lf test 填进输入框。

可点击只在游戏内聊天里有效。 MCDR 把消息渲染到控制台时走 to_colored_text(), 而它明确「丢弃点击与悬停事件」——所以控制台里那几行本身就是可复制的命令文本, 不依赖按钮。

4. 全部子命令改为仅管理员可用(ADMIN)

状态页会印出你写的每一条规则、test 会验证日志内容——这些不该让普通玩家看到。

被拒绝时会一并说明为什么:

需要管理员权限。MCDR 的权限来自 permission.yml,与游戏内 OP 无关;
请让管理员在 MCDR 控制台执行:!!MCDR permission set <你的ID> admin

MCDR 默认只回一句「权限不足」,而它完全不读游戏内的 OP 状态(权限只来自 permission.yml,未登记的玩家默认 user)——这正是「我在游戏里是 OP 却用不了」的根源。

5. 状态页(!!lf list)改成和帮助页同一套样子

同一个顶栏、同样的配色、规则行也用同样的 -- 分隔符并对齐。整屏每行都是「标签 + 内容」或一条规则:

============  Server Log Filter v1.4.0  ============
规则数: 2    本次已隐去: 0 行
语言: zh_cn(配置指定)
 [1]     0 次 -- standing on air - force-sending blocks below   (上次命中:第 2 个开服周期)
 [2]     0 次 -- joined the game
已跳过: 1 条规则(正则写错或回溯风险,原因见 MCDR 日志)
开服周期: 3 个
提示: 服务端自身日志不受影响;被隐去的行仍会正常派发给插件事件。

6. 规则编号不再有多余空格

[ 1] 里那个空格是为「10 条以上时 ] 能对齐」留的,但 9 条以内它纯粹是噪音。 现在宽度按当前条数算:9 条以内印 [1],10 条以上才补成 [ 1] / [12]。


包体积:31,454 B → 19,764 B(−37%)

体积
1.3.025,739 B
本版开工时31,454 B
v1.4.019,764 B(比开工时 −37%,比 1.3.0 还小 23%)

最大的一笔来自一个想法:打包时剥掉注释与 docstring,仓库里完整保留。

  • 注释与 docstring 占 __init__.py 原始字节的 16%,却占它压缩后体积的一半—— 自然语言不重复,deflate 对它几乎无能为力。
  • 用 tokenize 而不是正则找注释:字符串里的 #(URL、颜色码)会被正则误切。
  • 清空而不删行:行号与仓库逐文件一致,所以从已安装插件报出的 traceback 仍指向 仓库源码的同一行。函数体只剩一句 docstring 时补 pass。
  • 另外把包内 CHANGELOG 精简到最新一版该有的篇幅(详细内容就在这份说明里)。

试过但没做的(顺便省得你再想):

  • ⛔ bzip2 / lzma:纸面能再小 10%,但 CPython 的 zipimport 只认 deflate—— 换上之后 zlib.error: Error -3 while decompressing data,插件完全加载不了。 这是硬限制,不是性能取舍。
  • 合并两个语言文件:省 3.5%,但要改掉 lang/<code>.json 的约定、动加载器和约 30 条语言测试,不值。
  • 语言/元数据 JSON 压成单行:合计省 0.7%,牺牲仓库可读性,不值。
  • 删掉配置项的长说明:那 11 条会被写进你的 config.json 当选项注释,是插件唯一的自带文档。

升级说明

无需改动任何配置。 只有两处需要留意:

  1. 裸敲 !!logfilter 现在给帮助;看状态请敲 !!logfilter list(或 !!lf list)。
  2. 普通玩家不再能使用这些命令,会看到「权限不足」及其原因。 如果你是管理员却用不了,说明 MCDR 里还没登记你——见上面的提权命令。

兼容性

最低 MCDR 版本仍为 2.15.0,未引入新的 MCDR API。已在 2.15.0 / 2.15.7 / 2.16.0 上实测通过; 2.13.0 / 2.14.1 仍由依赖检查干净拒绝。

测试

  • 测试 221 → 263(单测 188 → 226,真机端到端 33 → 37)
  • 变异 33 → 46(46/46 全部被抓住)
  • 新增的端到端用例之一是在真实 MCDR 上真的敲一遍 !!lf: 探针插件在启动后调用 server.execute_command(),用横幅夹住控制台输出再逐段断言—— 这样「别名到底有没有注册进 MCDR」藏不住。
  • e2e 装进 MCDR 的正是构建出来的包,所以「剥注释」也是端到端验证过的。

产物

文件大小SHA256
ServerLogFilter-v1.4.0.mcdr19,764 B6f8b361ac5fe0e9fa98de393b10477ebb8d33071c048b71d49e767b81c900997

包内固定 7 个文件:mcdreforged.plugin.json、server_log_filter/{__init__.py,i18n.py}、 server_log_filter/lang/{en_us,zh_cn}.json、CHANGELOG.md、LICENSE (三个 README 都不打包)。