战斗日志全量打印,一天写满一块硬盘,翻日志像大海捞针。日志采样按类别分策略:错误日志全量保留、行为日志按一成比例采样、调试日志仅开启期间记录,存储占用降到一个数量级,排查信息一条不少。
日志写入入口按类别分流:错误类全量落盘,行为类按一成比例采样,调试类只在排障开关开启时记录,三类互不干扰。
local ERROR_SAMPLE, DEBUG_ON = 1, false
local counters = { err = 0, act = 0 }
local function writeLog(kind, line)
if kind == "err" then
counters.err = counters.err + 1
saveLog("ERR", line)
return
end
if kind == "act" then
counters.act = counters.act + 1
if counters.act % 10 == 0 then
saveLog("ACT", line)
end
return
end
if DEBUG_ON then
saveLog("DBG", line)
end
end
排障期间把行为日志采样率临时调到全量,定位完成后回落,采样率存系统变量支持值班在线调整,不用重启进程。
local function setSampleRate(rate)
setsysvarex("ACT_SAMPLE_RATE", rate, 1)
end
local function currentRate()
return tonumber(getsysvar("ACT_SAMPLE_RATE") or "10") or 10
end
压测十万条行为日志,采样落盘约一万条且分布均匀;错误日志全量保留核对无遗漏;采样率调整后立即生效无需重启。监控日志盘的日增量与采样率配置,日增量超过阈值说明有日志类目漏接采样。
采样的取模判断从零开始,第一批日志全被采走造成集中写入尖峰,改成计数器加随机起始偏移摊平写入。采样率存内存没落盘,重启后回到默认值,值班调好的参数悄悄失效,落盘参数补上。错误日志与行为日志写在同一个文件,错误被行为日志淹没,按类别分文件后排查效率提升。日志的清理由独立任务执行,采样降耗后清理周期同步拉长,避免误删刚写入的日志。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 行会活动集中在攻城战,日常缺乏轻量社交场景。行会篝火答题做行会固定社交活动:每周三、周日晚在行会驻地点燃…
实战应用:用在哪里 全服答题活动办过几期,参与的人不少但黏性不足,答完就散。科举答题把答题做成两段式:每天晚八点的乡试答题筛…
n n n 实战应用:用在哪里 n战斗中打字沟通慢且危险,队伍协作靠喊话效率太低。快捷短语栏在屏幕底部提供八条可自定义的战斗…
n n n 实战应用:用在哪里 n龙脉区域的野外宝箱是散人玩家的每日福利:每逢整点在龙脉区域随机刷新十五个宝箱,分三档给不同…
实战应用:用在哪里 同一玩家的两条消息走了不同的处理路径,先发的后到,装备穿上的消息比脱下的消息晚处理,面板状态错乱。消息有…
实战应用:用在哪里 战斗日志全量打印,一天写满一块硬盘,翻日志像大海捞针。日志采样按类别分策略:错误日志全量保留、行为日志按…