Skip to content

日志系统

fun 内建异步日志(logger.go):六个级别、终端 / 文件双模式、文件轮转与过期清理,零配置即可用。

打日志

go
fun.DebugLogger("查询参数:", dto)
fun.InfoLogger("订单创建成功:", orderId)
fun.WarnLogger("缓存未命中:", key)
fun.ErrorLogger("数据库错误:", err)
fun.PanicLogger("不可能的分支:", state)
fun.TraceLogger("进入 ChatSvc.Chat")
  • 全部是可变参数(...any),直接拼值;
  • 异步写:日志先进 100 容量的通道,由后台 goroutine 统一格式化输出——打日志不阻塞业务路径;
  • 能被 JSON 解析的字符串参数会规范化输出。

级别

常量数值语义
fun.PanicLevel0最严重
fun.ErrorLevel1
fun.WarnLevel2
fun.InfoLevel3
fun.DebugLevel4
fun.TraceLevel5最详细

过滤规则为 配置级别 >= 消息级别 才输出:默认 TraceLevel(5)输出全部;设为 InfoLevel(3)则只输出 Info / Warn / Error / Panic。

配置:ConfigLogger

go
fun.ConfigLogger(fun.Logger{
    Level:          fun.InfoLevel,
    Mode:           fun.FileMode,
    MaxSizeFile:    50,          // 单文件上限(MB),超限轮转
    MaxNumberFiles: 30,          // 最多保留文件数,超限删最旧
    ExpireLogsDays: 14,          // 日志保留天数
    LogFilePath:    "./logs",    // 文件模式目录(默认 "../log")
})
字段类型说明
Leveluint8过滤级别,默认 TraceLevel
Modeuint8TerminalMode(默认)/ FileMode
MaxSizeFileuint8单文件大小上限(MB)
MaxNumberFilesuint64文件数量上限
ExpireLogsDaysuint8保留天数
LogFilePathstring文件目录

文件模式按「日期 + 序号」命名,后台 worker 每 24 小时清理过期文件;ConfigLogger 可安全地在运行期随时调用(读 写并发安全)。

与框架错误日志的关系

框架内部错误(DTO 解码失败、handler panic 兜底、internalError 脱敏前的完整信息)会自动走 ErrorLogger 记入同一套日志——排障时服务端日志比客户端 msg 详细得多,这是刻意设计,见线协议与错误处理

下一步

基于 MIT 许可发布