日志系统
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.PanicLevel | 0 | 最严重 |
fun.ErrorLevel | 1 | |
fun.WarnLevel | 2 | |
fun.InfoLevel | 3 | |
fun.DebugLevel | 4 | |
fun.TraceLevel | 5 | 最详细 |
过滤规则为 配置级别 >= 消息级别 才输出:默认 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")
})| 字段 | 类型 | 说明 |
|---|---|---|
Level | uint8 | 过滤级别,默认 TraceLevel |
Mode | uint8 | TerminalMode(默认)/ FileMode |
MaxSizeFile | uint8 | 单文件大小上限(MB) |
MaxNumberFiles | uint64 | 文件数量上限 |
ExpireLogsDays | uint8 | 保留天数 |
LogFilePath | string | 文件目录 |
文件模式按「日期 + 序号」命名,后台 worker 每 24 小时清理过期文件;ConfigLogger 可安全地在运行期随时调用(读 写并发安全)。
与框架错误日志的关系
框架内部错误(DTO 解码失败、handler panic 兜底、internalError 脱敏前的完整信息)会自动走 ErrorLogger 记入同一套日志——排障时服务端日志比客户端 msg 详细得多,这是刻意设计,见线协议与错误处理。