let logger = Logger::new()
.level(Level::INFO)
.add_context("service", "billing")
.build()
let logger = logger.info("server started", [("port", "8080")])
let logger = logger.warn("disk space low", [("free_gb", "2.3")])
let records = logger.records()
let lines = logger.logs()
MoonLogTrace
MoonLogTrace 是一个纯 MoonBit 的结构化日志与轻量追踪库,面向需要可测试、可回放内存日志的 MoonBit 应用。项目采用不可变值风格,提供日志级别过滤、结构化字段、安全序列化、滚动窗口、查询、保留策略、Span、上下文和统计辅助工具。
安装
模块名以
moon.mod为准:CCllff-jpg/MoonLogTrace。快速开始
Logger 是持久化值;每次写日志后应接收返回的新 Logger。
运行仓库演示:
核心能力
TRACE、DEBUG、INFO、WARN、ERROR。MemoryAppender和有界RollingAppender均采用防御性复制。LogReplay::from_logger读取 Logger 的结构化记录,replay_into保留原始字段、级别和时间戳。LogContext、CorrelationId、RequestContext、Span。滚动窗口
容量小于或等于 0 时不会保留记录,但会统计被丢弃数量。
回放、查询与保留
查询的
since/until边界为闭区间。保留策略先按级别和年龄过滤,再在结果超过容量时保留最新记录,并分别报告三类丢弃数量。输出安全
这些函数只负责生成字符串,不负责文件写入、网络传输或协议握手。
工程门禁
当前本地工具链为
moon 0.1.20260713。该版本不接受moon fmt --deny-warn和moon info --deny-warn,因此 CI 先检测参数支持情况,并在不支持时执行严格等价门禁:GitHub Actions 中仍显式保留赛事要求的四个过程和命令文本:
moon check、moon fmt --deny-warn、moon info --deny-warn、moon test。当前边界
timestamp是单调递增逻辑序列,不是系统时间;调用保留策略时由调用者提供当前逻辑时间。Array[(String, String)];复杂嵌套值需由调用者先序列化。项目状态
.mbt总计:32 个文件,4,054 行。详细开发记录和验收证据位于
docs/competition。