竹简文档
日志系统

概述

xLog 包提供企业级日志管理,支持彩色控制台、文件切割、链路追踪

日志系统

xLog 是基于 Go 标准库 log/slog 构建的企业级日志库,提供彩色控制台输出、JSON 文件记录、自动切割归档、链路追踪等功能。

import xLog "github.com/bamboo-services/bamboo-base-go/common/log"

核心特性

特性说明
双通道输出控制台彩色 + 文件 JSON
命名日志器按模块分类,便于过滤
链路追踪自动提取 Trace ID
自动切割按大小切割,按天归档
GORM 集成数据库日志适配器

快速使用

命名日志器

// 创建带名称的日志器
log := xLog.WithName(xLog.NamedCORE)

log.Info(ctx, "服务启动成功")
log.Debug(ctx, "调试信息")
log.Error(ctx, "发生错误")

全局函数

// 标准方式
xLog.Info(ctx, "用户登录", slog.String("user_id", "12345"))

// Sugar 语法糖(key-value 形式)
xLog.SugarInfo(ctx, "用户登录", "user_id", "12345", "ip", "192.168.1.1")

带属性的日志

log := xLog.WithName(xLog.NamedAUTH)

// 使用 slog.Attr
log.Info(ctx, "登录成功",
    slog.String("user_id", "12345"),
    slog.String("ip", "192.168.1.1"),
)

// 使用 Sugar 语法糖
log.SugarInfo(ctx, "登录成功", "user_id", "12345", "ip", "192.168.1.1")

日志级别

级别方法说明
DEBUGDebug / SugarDebug调试信息,仅调试模式输出
INFOInfo / SugarInfo一般信息
NOTICENotice / SugarNotice重要信息 (INFO+1)
WARNWarn / SugarWarn警告信息
ERRORError / SugarError错误信息
PANICPanic / SugarPanic错误并触发 panic

输出格式

控制台输出

彩色格式,便于开发调试:

2024-01-15 10:30:00 [INFO] [abc123] [CORE] 服务启动成功
2024-01-15 10:30:01 [DEBUG] [abc123] [AUTH] 验证用户令牌
2024-01-15 10:30:02 [ERROR] [abc123] [REPO] 数据库连接失败

文件输出

JSON 格式,便于日志分析:

{
  "time": "2024-01-15T10:30:00.000+08:00",
  "level": "INFO",
  "message": "服务启动成功",
  "trace": "abc123",
  "logger": "CORE"
}

初始化示例

register_logger.go
func (r *Reg) LoggerInit() {
    // 1. 创建日志切割器
    rotator, err := xLog.NewRotatingWriter(xLog.RotatorConfig{
        Dir:      ".logs",
        BaseName: "log",
        Ext:      ".log",
        MaxSize:  10 * 1024 * 1024, // 10MB
    })
    if err != nil {
        panic(err)
    }

    // 2. 创建自定义 Handler
    handler := xLog.NewLogHandler(xLog.HandlerConfig{
        Console:     os.Stdout,
        File:        rotator,
        Level:       slog.LevelDebug,
        IsDebugMode: true,
    })

    // 3. 设置为全局默认 Logger
    slog.SetDefault(slog.New(handler))
}

API 一览

字段

类型

下一步

On this page