日志的分级存储让排障的效率倍增:核心日志(交易、支付、安全)永久保留,调试日志(性能采样、状态轮询)保留 7 天自动清理。分级的策略让存储的成本可控,排障的关键日志不被清理冲掉。
---日志的分级写入
local LOG_LEVELS = { core = "core_logs", debug = "debug_logs", perf = "perf_logs" }
function Log.write(level, kind, data)
local target = LOG_LEVELS[level]
if target then
QF_AppendLog(target, { kind = kind, data = data, at = os.time() })
end
end
-- 核心日志:永久保留
Log.write("core", "trade", { orderId = "xxx", amount = 1000 })
-- 调试日志:7 天自动清理
Log.write("debug", "perf_sample", { fps = 58, memory = 120 })
核心日志的写入走独立的存储通道,清理任务跳过核心级别。调试日志的写入有采样控制:全量写入在高峰期产生大量 IO,采样率 10% 在保留排障能力的同时控制写入量。日志的字段结构统一:时间戳、级别、模块、数据体,格式的一致性让查询接口可以跨级别搜索。
---日志的分级查询
function LogQuery.search(level, kind, timeRange)
local results = {}
for _, row in ipairs(QF_LoadLogs(level, timeRange)) do
if not kind or row.kind == kind then
results[#results + 1] = row
end
end
return results
end
查询按级别与类型双重过滤,时间范围支持精确到秒的检索。日志的查询接口给运维工具与客服后台分别开放,运维查全量、客服查核心级。日志的存储按月分目录,目录的滚动让文件系统不会在单目录下堆积过多文件。
日志的写入速率与存储占用按小时监控,写入的异常峰值(翻倍级)提示业务侧的异常。
分级的设计曾经让核心日志的量远超预期,交易类日志的高频写入让核心目录每天增长数GB,核心日志的采样率降至 5% 后可控。日志的清理任务曾经误删了当天的核心日志,清理的范围限定在调试级别,核心级别的日志不参与自动清理。
日志的分级标准进开发规范:什么级别的日志进哪个通道在编码时确定,级别的调整走评审。日志的查询接口给运维工具集成,运维的排障流程在工具内清结不需要登服务器查文件。日志的格式统一为 JSON,结构化的日志让查询与聚合的效率提升。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 跨服远征分先锋、主力、后勤三队独立推进,三线全通合围BOSS。不同战力成员都有参与感。 策划要点与配置 …
实战应用:用在哪里 副本限时挑战加入超时血量惩罚:超时后BOSS攻击递增。上线后BOSS攻击叠到十倍秒杀全队。 事故还原与补…
实战应用:用在哪里 混沌麒麟召唤是全服高光时刻:暗幕聚合、裂缝展开、麒麟着陆三段演出各1.3秒。 三段式入场演出编排 围观镜…
实战应用:用在哪里 任务对话一闪而过玩家想回顾。回看接口把对话按节点存档,面板翻阅全部对话记录。 对话存档与查询渲染 当前章…
实战应用:用在哪里 服务器承载六十张地图,空闲地图白耗资源。按需激活,末人离开后六十秒休眠。 激活与休眠触发 休眠回收 验证…
实战应用:用在哪里 坐骑资质洗炼随机重滚五条属性,锁定满意的条目不再重滚,锁定越多消耗越大。 洗炼与锁定 锁定消耗递增 验证…