LND 的日志轮转换了一套开关:maxlogfiles 退役与 logging.file 家族
跑久了的闪电节点都会遇到同一个问题:日志越写越大。LND 早期用 maxlogfiles 和 maxlogfilesize 两个顶层参数控制轮转,后来的版本把这套能力搬进了 logging.file 前缀的新参数族,旧参数进入退役通道。翻旧教程配新节点的人经常在这里踩坑:旧参数还在帮助里,却已经不代表推荐用法,甚至与新参数互斥。本文按 LND v0.19.0-beta 源码核对。
旧参数现在的真实身份
源码里两个旧参数的注册文本都带着同样的后缀:DEPRECATED: use --logging.file.max-files instead(尺寸参数对应 --logging.file.max-file-size),并且都标了 hidden:"true"——默认帮助输出里看不见,但配置里写了仍会被解析。它们的语义保留:maxlogfiles 控制最多保留几个轮转文件、0 表示不轮转;maxlogfilesize 以 MB 计单个文件的上限。
新旧互斥:配置校验会拦你
更有工程意义的是校验逻辑:源码在配置构建阶段检查,如果旧的 MaxLogFiles 被设置过、同时新的 LogConfig.File.MaxLogFiles 也不再是默认值,直接返回错误 “cannot set both maxlogfiles and logging.file.max-files”,节点拒绝启动。尺寸参数同理。这段设计的意图很清楚:两套开关同时出现时没人猜得到听谁的,LND 选择不猜,报错让人来定。迁移到新版时的正确动作是二选一——推荐只留新参数族,把旧行注释掉。
新参数族长什么样
logging.file 家族接管三件事:是否启用文件轮转、保留多少个文件(logging.file.max-files,0 为不轮转)、单个文件多大触发轮转(logging.file.max-file-size,以 MB 计)。它与 LND 内置日志器的文件输出路径(--logdir 下的日志文件)配合工作:日志先写到当前文件,超过尺寸就改名归档、继续开新文件,归档数超过保留数就从最旧的删起。对磁盘紧张的树莓派级设备,这组参数是唯一能防”日志吃满 SD 卡”的机制——不轮转的情况下 lnd.log 会无限增长直到写失败。
排障期的反直觉操作
平时想要”小文件多份”方便按时间翻找,但在复现偶发故障时,轮转过快反而会把事发时刻的记录挤出去:0 号档(不轮转)加定期人工截断,或者干脆把保留份数调大,都比默认更保命。改完任何日志参数都要重启验证:开一把 debug 日志级别、跑几分钟,确认文件按预期生成与轮转,而不是等到磁盘报警才发现配置从没生效。
版本语境
旧参数在 v0.19.0-beta 里仍可解析但被标隐藏并给出迁移指引;更早的教程(介绍 maxlogfiles 为唯一手段的那批)与新节点的实际帮助文本会对不上,这是正常的版本演进而非配置写错。以 lnd --help 在你所用版本的输出为准做最终核对,是避免两套参数同时生效的唯一可靠方法。
迁移时的操作顺序建议
如果节点当前用旧参数运行良好,不必为了”参数现代化”专门停机改配置——隐藏标志仍然被解析,功能等价。真正必须动身的时机有两个:一是你要新引入 logging.file 家族的任何一个参数,此时旧参数如果同时被显式设置过,校验会直接拦下启动;二是你从旧版升级后出现日志行为与预期不符,此时先检查配置里是不是新旧两套并存、互相顶掉了意图。操作顺序建议:备份配置文件、注释掉旧行、写新行、重启、确认日志轮转按新参数生效(人为把尺寸阈值调小制造一次轮转是最快的验证)、观察一天后恢复正式阈值。整个过程里最容易出错的是”只删了新行、留着旧行还以为是新语法”这类半吊子迁移,新旧两套参数名混写时,LND 的互斥校验会替你兜底,但要到启动那一刻才报错——配置文件的一次完整复读,比一次失败启动便宜得多。
风险提示:日志与调试信息可能包含通道与付款的元数据,公开分享日志前先做脱敏;本文为机制说明,不构成投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。