
seelog 的日期滚动日志文件名格式无法按预期自定义的解决方案与现状说明
在使用 Seelog 配置
实际生成的文件却是 /tmp/-myApp.log.142711、/tmp/-myApp.log.142712 等形式——即时间戳被追加在文件名末尾并用英文句点分隔,而非插入到文件名开头。
这与 Seelog Wiki 文档 中描述的 "time.Now().Format(...) + " " + fileName" 行为明显不符。但需明确:该文档已长期未更新。正如 Seelog 项目 GitHub Issues #71 中维护者所确认的那样,当前实现逻辑固定为 filename + "." + timestamp,且 datepattern 仅控制时间戳格式(如 060201 对应 YYMMDD),并不影响拼接位置。
✅ 当前事实总结:
- ✅ datepattern="060201" 正确生效 → 时间戳为 142711(即 14年2月71日?,注意:Go 的 060201 实际对应 YYMMDD,但 71 是非法日,此处应为示例笔误;真实值如 240207 表示 2024年2月7日);
- ❌ 无法通过 XML 配置改变时间戳位置(前置 or 后置);
- ❌ 无 filenamepattern、nameformat 等扩展属性可用;
- ❌ 不支持正则重命名或自定义模板。
⚠️ 替代建议(若必须前置时间戳):
- 切换日志库:推荐升级至更活跃维护的替代方案,如 zerolog 或 zap,二者均支持完全可控的滚动文件名(例如 zap 结合 lumberjack 可自定义 Filename 生成逻辑);
- 预处理 + 符号链接(临时 workaround):启动时用脚本将 /tmp/-myApp.log 软链为 /tmp/$(date +%y%m%d)-myApp.log,但仅适用于单实例且不解决历史归档问题;
- 自行封装 RollingWriter:基于 Seelog 的 CustomReceiver 接口实现自定义滚动逻辑(需较强 Go 工程能力,且失去官方维护优势)。
? 结论:这不是配置错误,而是 Seelog 功能局限与文档脱节所致。官方已承认该行为与文档不一致(见 cihub/seelog#71),但因项目自 2018 年起基本停止维护,此问题不会在后续版本中修复。强烈建议新项目避免引入 Seelog,存量项目宜规划迁移至现代日志方案。










