竹简文档
日志系统

命名常量

预定义的日志命名常量,按模块分类管理日志

命名常量

xLog 提供了丰富的预定义命名常量,用于按模块分类管理日志。所有常量均为 4 字符,便于日志输出对齐。

LogNamedLogger

command.go
type LogNamedLogger struct {
    logger *slog.Logger
}

WithName

创建带名称的日志器,支持追加多个命名空间:

command.go
// 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
未定义紫色其他自定义名称

使用示例

handler/user.go
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)
}
logic/user.go
package logic

type UserLogic struct {
    log *xLog.LogNamedLogger
}

func NewUserLogic() *UserLogic {
    return &UserLogic{
        log: xLog.WithName(xLog.NamedLOGC),
    }
}

下一步

On this page