日志系统
命名常量
预定义的日志命名常量,按模块分类管理日志
命名常量
xLog 提供了丰富的预定义命名常量,用于按模块分类管理日志。所有常量均为 4 字符,便于日志输出对齐。
LogNamedLogger
type LogNamedLogger struct {
logger *slog.Logger
}WithName
创建带名称的日志器,支持追加多个命名空间:
// optionName 会按顺序追加到 logger 名称后显示,如 [CORE] [DB]
func WithName(name string, optionName ...string) *LogNamedLogger示例:
log := xLog.WithName(xLog.NamedCORE)
log.Info(ctx, "服务启动成功")
// 输出: 2024-01-15 10:30:00 [INFO] [abc123] [CORE] >> 服务启动成功
// 带多个命名空间
dbLog := xLog.WithName(xLog.NamedCORE, "DB", "Redis")
dbLog.Info(ctx, "数据库连接成功")
// 输出: 2024-01-15 10:30:00 [INFO] [abc123] [CORE] [DB] [Redis] >> 数据库连接成功四层架构类
用于标准分层架构:
字段
类型
示例:
// Handler 层
handlerLog := xLog.WithName(xLog.NamedCONT)
// Service 层
serviceLog := xLog.WithName(xLog.NamedSERV)
// Repository 层
repoLog := xLog.WithName(xLog.NamedREPO)业务逻辑类
用于业务处理模块:
字段
类型
核心服务类
用于核心模块:
字段
类型
网络通信类
用于网络相关模块:
字段
类型
安全认证类
用于安全相关模块:
字段
类型
通用工具类
用于工具和中间件:
字段
类型
控制台颜色
不同类别的命名常量在控制台显示不同颜色:
| 类别 | 颜色 | 包含常量 |
|---|---|---|
| 核心服务类 | 蓝色 | CONT, SERV, LOGC, REPO, CORE, BASE, MAIN |
| 路由网络类 | 黄色 | ROUT, HTTP, GRPC, SOCK, CONN, LINK |
| 安全认证类 | 红色 | AUTH, USER, PERM, ROLE, TOKN, SIGN |
| 业务逻辑类 | 白色 | BUSI, PROC, FLOW, TASK, JOBS |
| 其他已定义 | 橙色 | RECO, UTIL, FILT, MIDE, VALD, INIT, THOW, RESU |
| 未定义 | 紫色 | 其他自定义名称 |
使用示例
package handler
type UserHandler struct {
log *xLog.LogNamedLogger
}
func NewUserHandler() *UserHandler {
return &UserHandler{
log: xLog.WithName(xLog.NamedCONT),
}
}
func (h *UserHandler) Login(ctx *gin.Context) {
h.log.Info(ctx, "开始处理登录请求")
// ... 业务逻辑 ...
h.log.SugarInfo(ctx, "登录成功", "user_id", userID)
}package logic
type UserLogic struct {
log *xLog.LogNamedLogger
}
func NewUserLogic() *UserLogic {
return &UserLogic{
log: xLog.WithName(xLog.NamedLOGC),
}
}