# go-log **Repository Path**: go-framework_llllllh/go-log ## Basic Information - **Project Name**: go-log - **Description**: log日志框架。包含go-zero logc/logx日志解决方案,基于zap+lumberback自定义封装解决方案。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-24 - **Last Updated**: 2025-06-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # go-log #### go-zero日志库:logx和logc go-zero 提供了两个日志库:`logx` 和 `logc`。 `logx` 是主要日志库,功能全面;`logc` 是上下文感知的日志库,适合在请求上下文中使用。 ##### logx基本使用 1. 基本日志输出 ``` package main import ( "github.com/zeromicro/go-zero/core/logx" ) func main() { // 配置日志 logx.MustSetup(logx.LogConf{ Mode: "console", // 输出到控制台 // Path: "logs", // 如果要输出到文件,指定目录 Level: "info", // 日志级别 Encoding: "plain", // 或 "json" }) // 不同级别日志 logx.Info("这是一条info日志") logx.Infof("带格式的info日志: %s", "value") logx.Error("这是一条error日志") logx.Errorf("带格式的error日志: %s", "error value") logx.Debug("debug日志默认不会输出") logx.Slow("慢日志") // 带字段的日志 logx.WithDuration(1000).Info("请求耗时") logx.WithFields(logx.Field("key", "value")).Info("带额外字段的日志") } ``` 2. 文件日志输出 ``` logx.MustSetup(logx.LogConf{ Mode: "file", Path: "/var/log/myapp", Level: "info", KeepDays: 7, // 保留7天日志 MaxSize: 128, // 单个日志文件最大128MB Compress: true, // 压缩旧日志 }) ``` ##### loc上下文日志 `logc` 主要用于在请求上下文中记录日志,可以自动携带请求ID等信息。 ``` package main import ( "context" "github.com/zeromicro/go-zero/core/logc" "github.com/zeromicro/go-zero/core/trace" ) func main() { // 初始化trace(用于生成请求ID) trace.InitTracer(trace.Config{ Name: "example", Endpoint: "localhost:6831", Batcher: "jaeger", Sampler: 1.0, }) // 创建带有traceID的context ctx := context.Background() ctx, span := trace.TracerFromContext(ctx).Start(ctx, "root") defer span.End() // 使用logc记录日志 logc.Info(ctx, "这是一条info日志") logc.Infof(ctx, "带格式的日志: %s", "value") logc.Error(ctx, "这是一条error日志") // 带字段的日志 logc.WithContext(ctx).WithFields(logx.Field("key", "value")).Info("带字段的日志") } ``` ##### 高级配置 1. 自定义日志格式 ``` logx.SetUp(logx.LogConf{ Mode: "console", Encoding: "json", TimeFormat: "2006-01-02 15:04:05.000", // 自定义时间格式 }) ``` 2. 禁用日志 ``` logx.Disable() ``` 3. 全局字段 ``` logx.AddGlobalFields(logx.Field("service", "user-api")) ``` 4. 错误堆栈 ``` err := errors.New("something wrong") logx.WithStack(err).Error("发生错误") ``` ##### 实际项目中的使用建议 1. 在服务入口处配置全局日志 2. 在HTTP或gRPC处理器中使用`logc`记录请求相关日志 3. 在业务逻辑层使用`logx`记录业务日志 4. 为重要操作添加足够的日志信息以便排查问题 5. 避免在循环或高频操作中记录过多日志 #### zap+lumberjack自定义日志库使用 更多元化和高配,使用参考./log/log_test.go文件。