跳到正文

Log Deduplicator

通过屏蔽重复消息、精简冗长的堆栈跟踪,让杂乱的日志变得清爽。告别卡顿、延迟,也不用再翻找一万行重复内容。

收藏

截图

介绍

介绍由机器翻译自 CurseForge 原页面,仅供参考。

Log Deduplicator

如果你曾打开控制台,看到同一条错误重复出现数千次,那么这款模组就是为你准备的。Log Deduplicator 会检测重复的日志消息,并在达到可配置的阈值后将其抑制,让控制台保持清晰易读,也避免日志文件膨胀到数百 MB。

对于大型整合包来说,这款模组尤其有用:有问题的模组或配置错误的环境可能会疯狂刷屏,造成卡顿和延迟。减少日志刷屏,意味着更少的 I/O、更少用于格式化和写入日志行的 CPU 时间,整体游戏体验也会更流畅。

消息被抑制时,你仍会看到类似 [suppressed 482 times over 12.3s] 的摘要,因此不会有内容在毫无提示的情况下丢失。

工作原理

该模组会拦截所有级别的日志消息:Log4j、java.util.logging 和 System.out/err。它能识别出 Entity at (1.0, 2.0, 3.0) 和 Entity at (50.0, 64.0, -20.0) 这类消息实际上只是数字不同、内容相同的消息,因此会将它们归为一组,而不是把每条都视为独立消息。

它还会清理堆栈跟踪,移除重复的帧。这样,同一个异常反复记录时,你就能看到有用的信息,而不会被大量冗余内容淹没。

性能

与依赖正则表达式匹配模式的同类模组不同,Log Deduplicator 使用专为 Minecraft 日志格式编写的单遍扫描器。它只需遍历每条消息一次,就能原生处理坐标、UUID、内存地址和计时值,无需创建任何正则 Matcher 对象或中间字符串。基准测试显示,在消息规范化方面,它的速度约为正则表达式方案的 10 倍;在完整的去重流程中,端到端速度约快 2 倍。该模组还使用无锁并发缓存,而不是同步映射,因此即使服务器有多个线程产生大量日志,也不会因此成为性能瓶颈。

配置

所有设置都可以通过游戏内界面(需要 YACL)配置,也可以编辑 config/log_deduplicator.toml。

  • 按日志级别设置阈值 – 设置触发抑制前允许出现的重复次数(默认:错误为 5 次,信息为 20 次)
  • 时间窗口 – 控制消息在计数重置前归为一组的时长
  • 模糊匹配 – 将仅数字、坐标、UUID 或计时值不同的消息归为一组
  • 规范化 – 切换是否在比较前规范化坐标、UUID、内存地址和计时值
  • 日志记录器筛选 – 将特定日志记录器加入白名单或黑名单
  • 系统流去重 – 对 System.out/err 去重,并检测堆栈跟踪中的多行内容
  • 堆栈跟踪清理 – 移除重复帧,可选择剔除框架内部内容并限制最大深度

支持的平台

  • NeoForge 1.21.1
  • Fabric 1.21.1

欢迎在 Discord上获取支持

如果你想支持我和我的模组开发,我推荐你试试 BisectHosting。新客户使用代码 “project8gbderam”,购买游戏服务器首月可享 75 折优惠。他们提供全天候支持和闪电般的响应速度,让你放心托付,并为你的游戏需求提供出色的帮助。 https://www.bisecthosting.com/project8gbderam

Bisect

常见问题

Log Deduplicator 支持哪些 Minecraft 版本?

Log Deduplicator 支持 Minecraft Java 版 1.21.1,可用的加载器:Fabric / NeoForge。下载时注意选择和你游戏版本一致的文件。

Log Deduplicator 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。

评论

登录后评论和评分

Project8gbDeRam 的其他作品

查看全部 →