logger

package module
v0.5.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 29, 2026 License: Apache-2.0 Imports: 21 Imported by: 16

README

Go Logger - 企业级高性能日志库

go-logger 是一个现代化、高性能的 Go 日志库,专为企业级应用设计。它提供了强大的结构化日志、分布式追踪、Console 风格日志等企业级功能,并通过极致性能优化实现了出色的性能表现。

stable license download release commit issues pull fork star go size contributors codecov Go Report Card Go Reference Sourcegraph

📚 文档导航

📖 官方文档
💬 社区支持

🚀 为什么选择 go-logger?

⚡ 核心特性
  • 🎯 零依赖设计: 纯 Go 实现,无外部依赖,轻量高效
  • 📊 结构化日志: 支持键值对、字段映射、对象自动解析等多种结构化方式
  • 🔍 分布式追踪: 内置 Context 服务,支持 TraceID、RequestID、CorrelationID 等链路追踪
  • 🎨 Console 风格: JavaScript Console 风格的分组、表格、计时器功能
  • 🔌 灵活扩展: 自定义上下文提取器、格式化器、写入器、钩子等
  • ⚡ 高性能: 对象池、零拷贝、原子操作等性能优化
  • 🛡️ 并发安全: 完善的并发控制,适合高并发场景
核心功能
📝 多种日志方式
  • Printf 风格: Info(format, args...) / Infof(format, args...)
  • 纯文本: InfoMsg(msg) - 单个消息,无格式化开销
  • 键值对: InfoKV(msg, key, value, ...) - 结构化日志
  • 字段映射: InfoWithFields(msg, fields) - map 方式
  • 对象解析: InfoKV(msg, struct) - 自动解析结构体为键值对
  • 多行日志: InfoLines(line1, line2, ...) - 自动处理多行
  • 返回错误: InfoReturn(format, args...) - 记录日志并返回错误
🔍 分布式追踪
  • 统一 Context 服务: 集中管理链路追踪 ID
  • 多维度追踪: TraceID、RequestID、SpanID、CorrelationID
  • 自动提取: 从 context.Value 和 gRPC metadata 自动提取
  • 自定义提取器: 灵活的上下文信息提取机制
  • 链路关联: CorrelationChain 支持链路关联和指标收集
🎨 Console 风格日志
  • 日志分组: 支持嵌套分组和折叠分组
  • 表格渲染: 自动对齐、美化边框、智能列宽
  • 计时器: 支持中间检查点和自动格式化
  • Context 集成: 分组内支持带上下文的日志
🎯 多级日志系统
  • 24 种日志级别:
    • 基础级别(7个):TRACE(-1) → DEBUG(0) → INFO(1) → WARN(2) → ERROR(3) → FATAL(4) → OFF(99)
    • 系统级别(7个):SYSTEM(100) → KERNEL(101) → DRIVER(102) → APPLICATION(103) → SERVICE(104) → COMPONENT(105) → MODULE(106)
    • 业务级别(4个):BUSINESS(200) → TRANSACTION(201) → WORKFLOW(202) → PROCESS(203)
    • 安全级别(4个):SECURITY(300) → AUDIT(301) → COMPLIANCE(302) → THREAT(303)
    • 性能级别(4个):PERFORMANCE(400) → METRIC(401) → BENCHMARK(402) → PROFILING(403)
  • 级别过滤: 动态调整日志级别
  • 特殊日志类型: Success、Loading、Config、Start、Stop、Database、Network、Security、Cache、Environment
  • 性能日志: 自动分级(EXCELLENT/FAST/NORMAL/SLOW/VERY_SLOW)
  • 进度日志: 百分比和进度条显示
  • 健康检查: 服务健康状态监控
  • 审计日志: 用户操作审计追踪
企业级功能
  • 🔧 灵活配置: Builder 模式链式调用,支持动态配置
  • ⚙️ 适配器模式: 支持多种输出适配器(Console、File、Rotate、Buffered、Multi)
  • 🎯 错误处理: 返回错误的日志方法,简化错误处理流程
  • 📊 统计分析: 内置日志统计,支持运行时指标收集
  • 🧪 完善测试: 全面的测试覆盖,保证代码质量
  • 🔌 接口丰富: 支持多种日志框架的参数格式

🏗️ 项目结构

go-logger/
├── logger.go            # 核心日志实现
├── types.go             # 类型定义和构造函数
├── interfaces.go        # 接口定义
├── level.go             # 日志级别管理(24种级别)
├── context_service.go   # 上下文服务(链路追踪)
├── console.go           # Console 风格日志
├── timer.go             # 计时器实现
├── writer.go            # 写入器实现
├── output.go            # 输出管理
├── empty.go             # 空实现(用于禁用日志)
└── *_test.go            # 测试文件

📦 快速开始

环境要求

建议需要 Go 版本 1.20 或更高版本

安装

使用 Go 的模块支持,当您在代码中添加导入时,go [build|run|test] 将自动获取所需的依赖项:

import "github.com/kamalyes/go-logger"

或者,使用 go get 命令:

go get -u github.com/kamalyes/go-logger

🚀 使用示例

基础用法
package main

import (
	"context"
	"github.com/kamalyes/go-logger"
)

func main() {
	// 创建日志实例
	log := logger.NewLogger()
	
	// 基础日志
	log.Info("应用启动")
	log.Debug("调试信息: %s", "debug message")
	log.Warn("警告信息")
	log.Error("错误信息")
	
	// 结构化日志 - 键值对方式
	log.InfoKV("用户登录", "user_id", 1001, "username", "张三")
	
	// 🎯 结构化日志 - 对象方式 (自动解析)
	type User struct {
		ID    int    `json:"id"`
		Name  string `json:"name"`
		Email string `json:"email"`
	}
	user := User{ID: 1001, Name: "张三", Email: "user@example.com"}
	
	// 直接传递对象,自动解析为键值对
	log.InfoKV("用户信息", user)
	// 输出: 用户信息 {id: 1001, name: 张三, email: user@example.com}
	
	// 也支持 map
	data := map[string]interface{}{
		"request_id": "req-123",
		"method":     "POST",
		"status":     200,
	}
	log.InfoKV("API 请求", data)
	
	// 字段映射方式
	log.InfoWithFields("订单创建", map[string]interface{}{
		"order_id": "ORD-12345",
		"amount":   99.99,
		"user_id":  1001,
	})
	
	// 🎯 带上下文的日志(链路追踪)
	ctx := context.Background()
	ctx = context.WithValue(ctx, logger.KeyTraceID, "trace-12345")
	ctx = context.WithValue(ctx, logger.KeyRequestID, "req-67890")
	
	log.InfoContext(ctx, "用户登录成功")
	// 输出: [TraceID=trace-12345 RequestID=req-67890] 用户登录成功
	
	// 链式调用添加字段
	log.WithField("trace_id", "trace-123").
		WithField("user_id", "user-456").
		Info("带字段的日志")
	
	// 🎨 Console 风格日志
	cg := log.NewConsoleGroup()
	
	// 📊 分组日志
	cg.Group("🚀 应用启动流程")
	cg.Info("开始初始化...")
	
	// 📋 表格展示
	config := map[string]interface{}{
		"环境":   "生产环境",
		"端口":   8080,
		"调试模式": false,
	}
	cg.Table(config)
	// 输出美观的表格:
	//   ┌──────────┬────────────┐
	//   │ Key      │ Value      │
	//   ├──────────┼────────────┤
	//   │ 环境      │ 生产环境   │
	//   │ 端口      │ 8080       │
	//   │ 调试模式   │ false     │
	//   └──────────┴────────────┘
	
	// ⏱️  计时器
	timer := cg.Time("数据库连接")
	// ... 执行数据库连接 ...
	timer.End() // 输出: ⏱️  数据库连接: 123.45ms
	
	cg.Info("✅ 启动完成")
	cg.GroupEnd()
}
链式配置
// Builder 模式链式调用
log := logger.NewLogger().
	WithLevel(logger.INFO).
	WithShowCaller(true).
	WithColorful(true).
	WithPrefix("[MyApp]")

log.Info("配置完成")
自定义上下文提取器
// 自定义提取器,从 context 提取特定字段
extractor := func(ctx context.Context) string {
	if ctx == nil {
		return ""
	}
	
	var parts []string
	if traceID, ok := ctx.Value("trace_id").(string); ok {
		parts = append(parts, "TraceID="+traceID)
	}
	if userID, ok := ctx.Value("user_id").(string); ok {
		parts = append(parts, "UserID="+userID)
	}
	
	if len(parts) > 0 {
		return "[" + strings.Join(parts, " ") + "] "
	}
	return ""
}

log.SetContextExtractor(extractor)

ctx := context.WithValue(context.Background(), "trace_id", "trace-123")
ctx = context.WithValue(ctx, "user_id", "user-456")

log.InfoContext(ctx, "自定义上下文")
// 输出: [TraceID=trace-123 UserID=user-456] 自定义上下文
🎨 Console 风格日志功能

类似 JavaScript console 的日志分组、表格和计时器功能,让日志输出更加结构化和易读。

log := logger.NewLogger()
cg := log.NewConsoleGroup()

// 📊 日志分组 - 组织相关日志
cg.Group("🌐 API 请求处理")
cg.Info("接收到请求: GET /api/users")

// 嵌套分组
cg.Group("参数验证")
cg.Info("验证通过")
cg.GroupEnd()

// 📋 表格展示 - 结构化数据可视化
users := []map[string]interface{}{
	{"ID": 1, "姓名": "张三", "年龄": 25, "状态": "Active"},
	{"ID": 2, "姓名": "李四", "年龄": 30, "状态": "Active"},
}
cg.Table(users)
// 输出美观的表格:
//   ┌────┬──────┬──────┬────────┐
//   │ ID │ 姓名  │ 年龄  │ 状态    │
//   ├────┼──────┼──────┼────────┤
//   │ 1  │ 张三  │ 25   │ Active │
//   │ 2  │ 李四  │ 30   │ Active │
//   └────┴──────┴──────┴────────┘

// ⏱️  性能计时 - 测量操作耗时
timer := cg.Time("数据库查询")
// ... 执行数据库操作 ...
timer.End()  // 输出: ⏱️  数据库查询: 123.45ms

// 中间检查点
timer2 := cg.Time("文件处理")
// ... 执行部分操作 ...
timer2.Log("处理 50%")  // 输出: ⏱️  文件处理: 50.12ms - 处理 50%
// ... 继续操作 ...
timer2.End()  // 输出: ⏱️  文件处理: 102.34ms

cg.Info("✅ 请求处理完成")
cg.GroupEnd()

// 🎯 折叠分组 - 隐藏详细日志(仅显示 ERROR/FATAL)
cg.GroupCollapsed("调试信息")
cg.Debug("这条不会显示")
cg.Info("这条也不会显示")
cg.Error("但错误日志会显示")  // ❌ 会显示
cg.GroupEnd()

// 🌐 全局便捷方法 - 不需要 ConsoleGroup
logger.Group("全局分组")
logger.Info("这是全局分组内的日志")
logger.Table(map[string]string{"key": "value"})
logger.GroupEnd()

timer := logger.Time("全局计时器")
// ... 操作 ...
timer.End()

主要特性

  • 🎯 日志分组:

    • Group(label, ...args) - 开始新分组
    • GroupCollapsed(label, ...args) - 开始折叠分组(仅显示 ERROR/FATAL)
    • GroupEnd() - 结束当前分组
    • 支持无限层级嵌套,自动缩进
  • 📊 表格渲染:

    • Table(data) - 智能表格渲染
    • 支持格式: []map[string]interface{}, map[string]interface{}, [][]string, []string
    • 自动对齐、美化边框、智能列宽
  • ⏱️ 计时器:

    • Time(label) - 开始计时,返回 Timer 对象
    • Timer.End() - 结束计时并输出总耗时
    • Timer.Log(message) - 输出中间检查点
    • 智能时间格式化 (ms/s/m)
  • 🔄 Context 集成:

    • InfoContext(ctx, ...) - 带上下文的 Info 日志
    • DebugContext(ctx, ...) - 带上下文的 Debug 日志
    • WarnContext(ctx, ...) - 带上下文的 Warn 日志
    • ErrorContext(ctx, ...) - 带上下文的 Error 日志
    • 在分组内使用,自动继承缩进

适用场景

  • 🚀 应用启动流程展示
  • 📊 批量数据处理进度
  • 🔍 复杂业务流程追踪
  • ⚡ 性能瓶颈分析
  • 🐛 调试信息结构化输出
特殊日志类型
log := logger.NewLogger()

// 成功日志
log.Success("用户注册成功")

// 加载日志
log.Loading("正在加载配置文件...")

// 配置日志
log.ConfigLog("数据库连接: %s", "localhost:3306")

// 启动/停止日志
log.Start("HTTP 服务器启动在端口 8080")
log.Stop("HTTP 服务器已停止")

// 数据库日志
log.Database("执行查询: SELECT * FROM users")

// 网络日志
log.Network("发送 HTTP 请求: GET /api/users")

// 安全日志
log.Security("检测到可疑登录尝试")

// 缓存日志
log.Cache("缓存命中: user:1001")

// 环境日志
log.Environment("当前环境: production")

// 性能日志(自动分级)
log.Performance("数据库查询", 50*time.Millisecond)
// 输出: ⚡ [PERF-EXCELLENT] 数据库查询 completed in 50ms

log.Performance("API 调用", 2*time.Second, map[string]any{
	"endpoint": "/api/users",
	"method":   "GET",
})
// 输出: 🐢 [PERF-SLOW] API 调用 completed in 2s | Details: map[endpoint:/api/users method:GET]

// 进度日志
log.Progress(50, 100, "数据导入")
// 输出: 🟡 [PROGRESS] 数据导入: 50/100 (50.0%)

// 里程碑日志
log.Milestone("系统初始化完成")
// 输出: 🎯 [MILESTONE] 系统初始化完成

// 健康检查日志
log.Health("数据库", true, "连接正常")
// 输出: ✅ [HEALTH] 数据库: HEALTHY | 连接正常

log.Health("Redis", false, "连接超时")
// 输出: ❌ [HEALTH] Redis: UNHEALTHY | 连接超时

// 审计日志
log.Audit("删除用户", "admin", "user:1001", "成功")
// 输出: 📋 [AUDIT] User: admin | Action: 删除用户 | Resource: user:1001 | Result: 成功
计时器辅助
log := logger.NewLogger()

// 开始计时
timing := log.StartTiming("数据处理")

// 添加详细信息
timing.AddDetail("records", 1000)
timing.AddDetail("source", "database")

// 结束计时并自动记录
timing.End()
// 输出: ⚡ [PERF-FAST] 数据处理 completed in 80ms | Details: map[records:1000 source:database]
返回错误的日志方法
func processUser(id int) error {
	user, err := findUser(id)
	if err != nil {
		// 记录错误日志并返回错误
		return log.ErrorReturn("查找用户失败: %v", err)
	}
	
	if user == nil {
		// 记录警告日志并返回错误
		return log.WarnReturn("用户不存在: %d", id)
	}
	
	return nil
}

// 带上下文的返回错误
func processOrder(ctx context.Context, orderID string) error {
	order, err := findOrder(orderID)
	if err != nil {
		return log.ErrorCtxReturn(ctx, "查找订单失败: %v", err)
	}
	
	return nil
}

// 键值对方式返回错误
func validateInput(data map[string]interface{}) error {
	if data["email"] == nil {
		return log.WarnKVReturn("缺少必填字段", "field", "email")
	}
	
	return nil
}
多输出适配器
// 创建多个写入器
consoleWriter := logger.NewConsoleWriter(os.Stdout)
fileWriter := logger.NewFileWriter("app.log")
rotateWriter := logger.NewRotateWriter("app.log", 100*1024*1024, 10) // 100MB, 保留10个文件

// 组合多个写入器
multiWriter := logger.NewMultiWriter(consoleWriter, fileWriter, rotateWriter)

// 创建日志实例
log := logger.NewLogger().WithOutput(multiWriter)

log.Info("这条日志会同时输出到控制台和文件")
空日志实现(禁用日志)
// 创建空日志实例(不输出任何日志)
emptyLog := logger.NewEmptyLogger()

// 所有日志方法都不会产生任何输出
emptyLog.Info("这条日志不会输出")
emptyLog.Error("这条错误也不会输出")

// 适用场景:测试环境、性能敏感场景

🤝 社区贡献

我们欢迎各种形式的贡献!请遵循以下指南:

提交代码
  1. Fork 项目
git clone https://github.com/kamalyes/go-logger.git
cd go-logger
  1. 创建特性分支
git checkout -b feature/your-amazing-feature
  1. 编写代码和测试
  • 确保新功能有完整的测试套件
  • 运行 go test ./... 确保所有测试通过
  • 保持代码覆盖率 > 90%
  1. 提交更改
git commit -m 'feat: add amazing new feature'
  1. 推送并创建 Pull Request
git push origin feature/your-amazing-feature
代码规范
  • 遵循 Go 官方代码风格
  • 使用有意义的函数和变量名
  • 添加必要的注释和文档
  • 使用测试套件编写测试
  • 确保并发安全
测试要求
  • 新功能必须有对应的测试套件
  • 测试覆盖率不得低于当前水平
  • 包含性能基准测试(如适用)
  • 验证并发安全性

⭐ Star 历史

Star History Chart

许可证

该项目使用 MIT 许可证,详见 LICENSE 文件

Documentation

Overview

* @Author: kamalyes 501893067@qq.com * @Date: 2025-12-19 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-12-19 22:59:30 * @FilePath: \go-logger\console.go * @Description: JavaScript console 风格的日志分组和表格功能 * * Copyright (c) 2025 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-07 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-08 02:07:30 * @FilePath: \go-logger\context.go * @Description: * * Copyright (c) 2024 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2025-09-18 11:15:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-12-19 23:27:35 * @FilePath: \go-logger\empty.go * @Description: 空日志实现,用于禁用日志输出的场景 * * Copyright (c) 2025 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-07 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-09 16:00:00 * @FilePath: \go-logger\interfaces.go * @Description: 日志接口定义 - 增强版本,支持多种日志框架的参数格式 * * Copyright (c) 2024 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-07 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-22 12:33:32 * @FilePath: \go-logger\level.go * @Description: 统一的日志级别定义和管理 * * Copyright (c) 2024 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-07 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-09 09:42:37 * @FilePath: \go-logger\logger.go * @Description: 统一的日志工具包,支持 emoji 和结构化日志 * * Copyright (c) 2024 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2026-02-02 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-02-02 00:00:00 * @FilePath: \go-logger\output.go * @Description: 输出类型和配置 * * Copyright (c) 2026 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2025-12-19 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-12-19 23:52:45 * @FilePath: \go-logger\timer.go * @Description: 计时器功能,类似 JavaScript console.time() * * Copyright (c) 2025 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-07 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-08 02:07:30 * @FilePath: \go-logger\types.go * @Description: 核心类型定义 * * Copyright (c) 2024 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-07 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-07 23:19:49 * @FilePath: \go-logger\writer.go * @Description: 日志输出器实现 * * Copyright (c) 2024 by kamalyes, All Rights Reserved.

Index

Constants

View Source
const (
	ColorBlack   = "\033[30m"
	ColorRed     = "\033[31m"
	ColorGreen   = "\033[32m"
	ColorYellow  = "\033[33m"
	ColorBlue    = "\033[34m"
	ColorMagenta = "\033[35m"
	ColorCyan    = "\033[36m"
	ColorWhite   = "\033[37m"
	ColorGray    = "\033[90m"

	// 亮色版本
	ColorBrightRed     = "\033[91m"
	ColorBrightGreen   = "\033[92m"
	ColorBrightYellow  = "\033[93m"
	ColorBrightBlue    = "\033[94m"
	ColorBrightMagenta = "\033[95m"
	ColorBrightCyan    = "\033[96m"
	ColorBrightWhite   = "\033[97m"
)

预定义颜色常量

View Source
const (
	DefaultMaxSize        = 100 * 1024 * 1024   // 默认最大文件大小 100MB
	DefaultMaxFiles       = 5                   // 默认最大文件数
	DefaultFilePermission = 0644                // 默认文件权限
	DefaultDirPermission  = 0755                // 默认目录权限
	DefaultMaxAge         = 30 * 24 * time.Hour // 默认最大保留时间 30天
	DefaultBufferSize     = 4096                // 默认缓冲区大小 4KB
)

默认配置常量

View Source
const (
	ErrMsgFilePathEmpty   = "file_path is required for file output"
	ErrMsgRotatePathEmpty = "file_path is required for rotate output"
)

错误消息常量

View Source
const ColorReset = "\033[0m"

ColorReset 颜色重置代码

View Source
const ContextKeyTraceID = "trace_id"

ContextKeyTraceID 是 traceId 在日志输出的字段名,同时作为 ctx.Value 的 fallback key traceId 的唯一真相源是 OTel span(gRPC 的 otelgrpc StatsHandler / HTTP 的 Tracing 中间件创建) extract 优先从 OTel span 提取;当 ctx 不在 span 内时,fallback 到 ctx.Value("trace_id")

Variables

View Source
var (
	SuccessType     = SpecialLogType{"✅", "SUCCESS"}
	LoadingType     = SpecialLogType{"⏳", "LOADING"}
	ConfigType      = SpecialLogType{"⚙️", "CONFIG"}
	StartType       = SpecialLogType{"🚀", "START"}
	StopType        = SpecialLogType{"🛑", "STOP"}
	DatabaseType    = SpecialLogType{"💾", "DATABASE"}
	NetworkType     = SpecialLogType{"🌐", "NETWORK"}
	SecurityType    = SpecialLogType{"🔒", "SECURITY"}
	CacheType       = SpecialLogType{"🗄️", "CACHE"}
	EnvironmentType = SpecialLogType{"🌍", "ENV"}
)

特殊日志类型定义

Functions

func CleanupExpiredTimers added in v0.4.6

func CleanupExpiredTimers(maxAge time.Duration) int

CleanupExpiredTimers 手动清理超过指定时间未结束的计时器

func DefaultContextKeys added in v0.4.6

func DefaultContextKeys() []compiledContextKey

DefaultContextKeys 返回默认上下文提取 key

func GetActiveTimersCount added in v0.4.6

func GetActiveTimersCount() int

GetActiveTimersCount 获取当前活跃的计时器数量

func GetAllCategories added in v0.4.0

func GetAllCategories() []string

GetAllCategories 获取所有类别

func GetAllLevelNames added in v0.4.0

func GetAllLevelNames() []string

GetAllLevelNames 获取所有级别名称(包括扩展级别)

func GetLevelNames

func GetLevelNames() []string

GetLevelNames 获取基础级别名称 (保持向后兼容)

func GetLevelShortNames added in v0.4.0

func GetLevelShortNames() []string

GetLevelShortNames 获取所有级别短名称

func IsEmptyLogger

func IsEmptyLogger(logger ILogger) bool

IsEmptyLogger 检查给定的logger是否是空日志实现

func SetGlobalLevel

func SetGlobalLevel(level LogLevel)

SetGlobalLevel 设置全局日志级别

func SetGlobalShowCaller

func SetGlobalShowCaller(show bool)

SetGlobalShowCaller 设置全局是否显示调用者信息

func SetTimerCleanupInterval added in v0.4.6

func SetTimerCleanupInterval(interval time.Duration)

SetTimerCleanupInterval 设置清理间隔(可选配置,立即生效,触发 cleanup goroutine 重建 ticker)

func SetTimerMaxAge added in v0.4.6

func SetTimerMaxAge(maxAge time.Duration)

SetTimerMaxAge 设置计时器最大存活时间(可选配置,热更新,线程安全)

Types

type BufferedWriter

type BufferedWriter struct {
	// contains filtered or unexported fields
}

BufferedWriter 缓冲输出器(为底层输出器添加可配置的缓冲层)

func (*BufferedWriter) Close

func (w *BufferedWriter) Close() error

Close 关闭输出器

func (*BufferedWriter) Flush

func (w *BufferedWriter) Flush() error

Flush 刷新缓冲区

func (*BufferedWriter) GetStats

func (w *BufferedWriter) GetStats() WriterStatsSnapshot

GetStats 获取统计信息

func (*BufferedWriter) IsHealthy

func (w *BufferedWriter) IsHealthy() bool

IsHealthy 检查健康状态

func (*BufferedWriter) Write

func (w *BufferedWriter) Write(p []byte) (n int, err error)

Write 实现io.Writer接口

func (*BufferedWriter) WriteLevel

func (w *BufferedWriter) WriteLevel(level LogLevel, data []byte) (n int, err error)

WriteLevel 按级别写入

type BufferedWriterOption added in v0.4.6

type BufferedWriterOption func(*BufferedWriter)

BufferedWriterOption 缓冲输出器配置选项

func WithBufferSize added in v0.4.6

func WithBufferSize(bufferSize int) BufferedWriterOption

WithBufferSize 设置缓冲区大小

func WithBufferedLevel added in v0.4.6

func WithBufferedLevel(level LogLevel) BufferedWriterOption

WithBufferedLevel 设置日志级别

func WithBufferedUnderlying added in v0.4.6

func WithBufferedUnderlying(underlying IWriter) BufferedWriterOption

WithBufferedUnderlying 设置底层输出器

type CallerInfo

type CallerInfo struct {
	File     string `json:"file"`
	Line     int    `json:"line"`
	Function string `json:"function"`
}

CallerInfo 调用者信息

type ConsoleGroup added in v0.4.6

type ConsoleGroup struct {
	// contains filtered or unexported fields
}

ConsoleGroup 控制台分组 所有输出直接写入 output(默认 os.Stdout),不走 logger 的 JSON/文本格式化 这样启动横幅、表格等控制台展示内容不会污染 JSON 日志流

func NewConsoleGroup added in v0.5.4

func NewConsoleGroup() *ConsoleGroup

NewConsoleGroup 创建新的控制台分组(包级函数,输出到 os.Stdout)

func (*ConsoleGroup) Debug added in v0.4.6

func (cg *ConsoleGroup) Debug(format string, args ...interface{})

Debug 在分组中记录 Debug 级别日志

func (*ConsoleGroup) DebugContext added in v0.4.6

func (cg *ConsoleGroup) DebugContext(ctx context.Context, format string, args ...interface{})

DebugContext 在分组中记录带上下文的 Debug 级别日志

func (*ConsoleGroup) Error added in v0.4.6

func (cg *ConsoleGroup) Error(format string, args ...interface{})

Error 在分组中记录 Error 级别日志

func (*ConsoleGroup) ErrorContext added in v0.4.6

func (cg *ConsoleGroup) ErrorContext(ctx context.Context, format string, args ...interface{})

ErrorContext 在分组中记录带上下文的 Error 级别日志

func (*ConsoleGroup) Group added in v0.4.6

func (cg *ConsoleGroup) Group(label string, args ...interface{})

Group 开始一个新的日志分组 类似 JavaScript console.group()

func (*ConsoleGroup) GroupCollapsed added in v0.4.6

func (cg *ConsoleGroup) GroupCollapsed(label string, args ...interface{})

GroupCollapsed 开始一个折叠的日志分组 类似 JavaScript console.groupCollapsed() 在折叠状态下,该分组内的日志将不会输出(除非日志级别为 ERROR 或 FATAL)

func (*ConsoleGroup) GroupEnd added in v0.4.6

func (cg *ConsoleGroup) GroupEnd()

GroupEnd 结束当前分组 类似 JavaScript console.groupEnd()

func (*ConsoleGroup) Info added in v0.4.6

func (cg *ConsoleGroup) Info(format string, args ...interface{})

Info 在分组中记录 Info 级别日志

func (*ConsoleGroup) InfoContext added in v0.4.6

func (cg *ConsoleGroup) InfoContext(ctx context.Context, format string, args ...interface{})

InfoContext 在分组中记录带上下文的 Info 级别日志

func (*ConsoleGroup) Log added in v0.4.6

func (cg *ConsoleGroup) Log(level LogLevel, format string, args ...interface{})

Log 在当前分组中记录日志

func (*ConsoleGroup) Table added in v0.4.6

func (cg *ConsoleGroup) Table(data interface{})

Table 在分组中显示表格 类似 JavaScript console.table()

func (*ConsoleGroup) Time added in v0.4.6

func (cg *ConsoleGroup) Time(label string) *Timer

Time 开始计时 类似 JavaScript console.time()

func (*ConsoleGroup) Warn added in v0.4.6

func (cg *ConsoleGroup) Warn(format string, args ...interface{})

Warn 在分组中记录 Warn 级别日志

func (*ConsoleGroup) WarnContext added in v0.4.6

func (cg *ConsoleGroup) WarnContext(ctx context.Context, format string, args ...interface{})

WarnContext 在分组中记录带上下文的 Warn 级别日志

type ConsoleTable added in v0.4.6

type ConsoleTable struct {
	Headers []string
	Rows    [][]string
}

ConsoleTable 表格数据结构

type ConsoleWriterOption added in v0.4.6

type ConsoleWriterOption func(*consoleLogWriter)

ConsoleWriterOption 控制台输出器配置选项

func WithConsoleColor added in v0.4.6

func WithConsoleColor(color bool) ConsoleWriterOption

WithConsoleColor 设置是否启用颜色

func WithConsoleLevel added in v0.4.6

func WithConsoleLevel(level LogLevel) ConsoleWriterOption

WithConsoleLevel 设置日志级别

func WithConsoleOutput added in v0.4.6

func WithConsoleOutput(output io.Writer) ConsoleWriterOption

WithConsoleOutput 设置输出目标

type ContextExtractor added in v0.4.1

type ContextExtractor func(ctx context.Context) string

ContextExtractor 上下文信息提取器函数类型

type EmptyAdapter

type EmptyAdapter struct {
	*EmptyLogger
	// contains filtered or unexported fields
}

EmptyAdapter 是 IAdapter 接口的空实现

func NewEmptyAdapter

func NewEmptyAdapter(name string) *EmptyAdapter

NewEmptyAdapter 创建一个新的空适配器

func (*EmptyAdapter) Close

func (e *EmptyAdapter) Close() error

Close 关闭适配器(空实现)

func (*EmptyAdapter) Flush

func (e *EmptyAdapter) Flush() error

Flush 刷新缓冲区(空实现)

func (*EmptyAdapter) GetAdapterName

func (e *EmptyAdapter) GetAdapterName() string

GetAdapterName 获取适配器名称

func (*EmptyAdapter) GetAdapterVersion

func (e *EmptyAdapter) GetAdapterVersion() string

GetAdapterVersion 获取适配器版本

func (*EmptyAdapter) Initialize

func (e *EmptyAdapter) Initialize() error

Initialize 初始化适配器(空实现)

func (*EmptyAdapter) IsHealthy

func (e *EmptyAdapter) IsHealthy() bool

IsHealthy 检查适配器健康状态

func (*EmptyAdapter) SetHealthy

func (e *EmptyAdapter) SetHealthy(healthy bool)

SetHealthy 设置适配器健康状态

type EmptyHook

type EmptyHook struct {
	// contains filtered or unexported fields
}

EmptyHook 是 IHook 接口的空实现

func NewEmptyHook

func NewEmptyHook(levels []LogLevel) *EmptyHook

NewEmptyHook 创建一个新的空钩子

func (*EmptyHook) Fire

func (e *EmptyHook) Fire(entry *LogEntry) error

Fire 执行钩子(空实现)

func (*EmptyHook) Levels

func (e *EmptyHook) Levels() []LogLevel

Levels 获取支持的级别

type EmptyLogger

type EmptyLogger struct {
	// contains filtered or unexported fields
}

EmptyLogger 是 ILogger 接口的空实现,所有方法都不执行任何操作 常用于测试环境或需要禁用日志输出的场景

func NewEmptyLogger

func NewEmptyLogger() *EmptyLogger

NewEmptyLogger 创建一个新的 EmptyLogger 实例

func NewEmptyLoggerWithLevel

func NewEmptyLoggerWithLevel(level LogLevel) *EmptyLogger

NewEmptyLoggerWithLevel 创建一个指定级别的空日志实例

func (*EmptyLogger) Clone

func (e *EmptyLogger) Clone() ILogger

实用方法

func (*EmptyLogger) ConsoleGroup added in v0.4.6

func (e *EmptyLogger) ConsoleGroup(label string, args ...interface{})

ConsoleGroup 空实现 - 开始分组(不执行任何操作)

func (*EmptyLogger) ConsoleGroupCollapsed added in v0.4.6

func (e *EmptyLogger) ConsoleGroupCollapsed(label string, args ...interface{})

ConsoleGroupCollapsed 空实现 - 开始折叠分组(不执行任何操作)

func (*EmptyLogger) ConsoleGroupEnd added in v0.4.6

func (e *EmptyLogger) ConsoleGroupEnd()

ConsoleGroupEnd 空实现 - 结束分组(不执行任何操作)

func (*EmptyLogger) ConsoleTable added in v0.4.6

func (e *EmptyLogger) ConsoleTable(data interface{})

ConsoleTable 空实现 - 显示表格(不执行任何操作)

func (*EmptyLogger) ConsoleTime added in v0.4.6

func (e *EmptyLogger) ConsoleTime(label string) *Timer

ConsoleTime 空实现 - 开始计时(返回空的计时器)

func (*EmptyLogger) Debug

func (e *EmptyLogger) Debug(format string, args ...interface{})

基本日志方法 - 所有方法都是空实现

func (*EmptyLogger) DebugContext

func (e *EmptyLogger) DebugContext(ctx context.Context, format string, args ...interface{})

带上下文的日志方法

func (*EmptyLogger) DebugContextKV added in v0.4.3

func (e *EmptyLogger) DebugContextKV(ctx context.Context, msg string, keysAndValues ...interface{})

带上下文的结构化日志方法

func (*EmptyLogger) DebugCtxReturn added in v0.4.6

func (e *EmptyLogger) DebugCtxReturn(ctx context.Context, format string, args ...interface{}) error

返回错误的上下文日志方法

func (*EmptyLogger) DebugKV

func (e *EmptyLogger) DebugKV(msg string, keysAndValues ...interface{})

结构化日志方法(键值对)

func (*EmptyLogger) DebugKVReturn added in v0.4.6

func (e *EmptyLogger) DebugKVReturn(msg string, keysAndValues ...interface{}) error

返回错误的键值对日志方法

func (*EmptyLogger) DebugLines added in v0.4.2

func (e *EmptyLogger) DebugLines(lines ...string)

func (*EmptyLogger) DebugMsg

func (e *EmptyLogger) DebugMsg(msg string)

纯文本日志方法

func (*EmptyLogger) DebugReturn added in v0.4.6

func (e *EmptyLogger) DebugReturn(format string, args ...interface{}) error

返回错误的日志方法

func (*EmptyLogger) DebugWithFields added in v0.4.6

func (e *EmptyLogger) DebugWithFields(msg string, fields map[string]interface{})

字段映射方法(直接支持 map[string]interface{})

func (*EmptyLogger) Debugf added in v0.3.0

func (e *EmptyLogger) Debugf(format string, args ...interface{})

Printf风格方法(与上面相同,但命名更明确)

func (*EmptyLogger) Error

func (e *EmptyLogger) Error(format string, args ...interface{})

func (*EmptyLogger) ErrorContext

func (e *EmptyLogger) ErrorContext(ctx context.Context, format string, args ...interface{})

func (*EmptyLogger) ErrorContextKV added in v0.4.3

func (e *EmptyLogger) ErrorContextKV(ctx context.Context, msg string, keysAndValues ...interface{})

func (*EmptyLogger) ErrorCtxReturn added in v0.4.6

func (e *EmptyLogger) ErrorCtxReturn(ctx context.Context, format string, args ...interface{}) error

func (*EmptyLogger) ErrorKV

func (e *EmptyLogger) ErrorKV(msg string, keysAndValues ...interface{})

func (*EmptyLogger) ErrorKVReturn added in v0.4.6

func (e *EmptyLogger) ErrorKVReturn(msg string, keysAndValues ...interface{}) error

func (*EmptyLogger) ErrorLines added in v0.4.2

func (e *EmptyLogger) ErrorLines(lines ...string)

func (*EmptyLogger) ErrorMsg

func (e *EmptyLogger) ErrorMsg(msg string)

func (*EmptyLogger) ErrorReturn added in v0.4.6

func (e *EmptyLogger) ErrorReturn(format string, args ...interface{}) error

func (*EmptyLogger) ErrorWithFields added in v0.4.6

func (e *EmptyLogger) ErrorWithFields(msg string, fields map[string]interface{})

func (*EmptyLogger) Errorf added in v0.3.0

func (e *EmptyLogger) Errorf(format string, args ...interface{})

func (*EmptyLogger) Fatal

func (e *EmptyLogger) Fatal(format string, args ...interface{})

func (*EmptyLogger) FatalContext

func (e *EmptyLogger) FatalContext(ctx context.Context, format string, args ...interface{})

func (*EmptyLogger) FatalContextKV added in v0.4.3

func (e *EmptyLogger) FatalContextKV(ctx context.Context, msg string, keysAndValues ...interface{})

func (*EmptyLogger) FatalKV

func (e *EmptyLogger) FatalKV(msg string, keysAndValues ...interface{})

func (*EmptyLogger) FatalMsg

func (e *EmptyLogger) FatalMsg(msg string)

func (*EmptyLogger) FatalWithFields added in v0.4.6

func (e *EmptyLogger) FatalWithFields(msg string, fields map[string]interface{})

func (*EmptyLogger) Fatalf added in v0.3.0

func (e *EmptyLogger) Fatalf(format string, args ...interface{})

func (*EmptyLogger) GetLevel

func (e *EmptyLogger) GetLevel() LogLevel

func (*EmptyLogger) GetStats

func (e *EmptyLogger) GetStats() *LoggerStats

GetStats 返回统计信息

func (*EmptyLogger) Info

func (e *EmptyLogger) Info(format string, args ...interface{})

func (*EmptyLogger) InfoContext

func (e *EmptyLogger) InfoContext(ctx context.Context, format string, args ...interface{})

func (*EmptyLogger) InfoContextKV added in v0.4.3

func (e *EmptyLogger) InfoContextKV(ctx context.Context, msg string, keysAndValues ...interface{})

func (*EmptyLogger) InfoCtxReturn added in v0.4.6

func (e *EmptyLogger) InfoCtxReturn(ctx context.Context, format string, args ...interface{}) error

func (*EmptyLogger) InfoKV

func (e *EmptyLogger) InfoKV(msg string, keysAndValues ...interface{})

func (*EmptyLogger) InfoKVReturn added in v0.4.6

func (e *EmptyLogger) InfoKVReturn(msg string, keysAndValues ...interface{}) error

func (*EmptyLogger) InfoLines added in v0.4.2

func (e *EmptyLogger) InfoLines(lines ...string)

多行日志方法

func (*EmptyLogger) InfoMsg

func (e *EmptyLogger) InfoMsg(msg string)

func (*EmptyLogger) InfoReturn added in v0.4.6

func (e *EmptyLogger) InfoReturn(format string, args ...interface{}) error

func (*EmptyLogger) InfoWithFields added in v0.4.6

func (e *EmptyLogger) InfoWithFields(msg string, fields map[string]interface{})

func (*EmptyLogger) Infof added in v0.3.0

func (e *EmptyLogger) Infof(format string, args ...interface{})

func (*EmptyLogger) IsLevelEnabled

func (e *EmptyLogger) IsLevelEnabled(level LogLevel) bool

func (*EmptyLogger) IsShowCaller

func (e *EmptyLogger) IsShowCaller() bool

func (*EmptyLogger) Log

func (e *EmptyLogger) Log(level LogLevel, msg string)

原始日志条目方法

func (*EmptyLogger) LogContext

func (e *EmptyLogger) LogContext(ctx context.Context, level LogLevel, msg string)

func (*EmptyLogger) LogKV

func (e *EmptyLogger) LogKV(level LogLevel, msg string, keysAndValues ...interface{})

func (*EmptyLogger) LogWithFields

func (e *EmptyLogger) LogWithFields(level LogLevel, msg string, fields map[string]interface{})

func (*EmptyLogger) NewConsoleGroup added in v0.4.6

func (e *EmptyLogger) NewConsoleGroup() *ConsoleGroup

NewConsoleGroup 创建空的 ConsoleGroup(不执行任何操作)

func (*EmptyLogger) Print

func (e *EmptyLogger) Print(args ...interface{})

兼容标准log包的方法

func (*EmptyLogger) Printf

func (e *EmptyLogger) Printf(format string, args ...interface{})

func (*EmptyLogger) Println

func (e *EmptyLogger) Println(args ...interface{})

func (*EmptyLogger) SetLevel

func (e *EmptyLogger) SetLevel(level LogLevel)

配置方法

func (*EmptyLogger) SetShowCaller

func (e *EmptyLogger) SetShowCaller(show bool)

func (*EmptyLogger) Warn

func (e *EmptyLogger) Warn(format string, args ...interface{})

func (*EmptyLogger) WarnContext

func (e *EmptyLogger) WarnContext(ctx context.Context, format string, args ...interface{})

func (*EmptyLogger) WarnContextKV added in v0.4.3

func (e *EmptyLogger) WarnContextKV(ctx context.Context, msg string, keysAndValues ...interface{})

func (*EmptyLogger) WarnCtxReturn added in v0.4.6

func (e *EmptyLogger) WarnCtxReturn(ctx context.Context, format string, args ...interface{}) error

func (*EmptyLogger) WarnKV

func (e *EmptyLogger) WarnKV(msg string, keysAndValues ...interface{})

func (*EmptyLogger) WarnKVReturn added in v0.4.6

func (e *EmptyLogger) WarnKVReturn(msg string, keysAndValues ...interface{}) error

func (*EmptyLogger) WarnLines added in v0.4.2

func (e *EmptyLogger) WarnLines(lines ...string)

func (*EmptyLogger) WarnMsg

func (e *EmptyLogger) WarnMsg(msg string)

func (*EmptyLogger) WarnReturn added in v0.4.6

func (e *EmptyLogger) WarnReturn(format string, args ...interface{}) error

func (*EmptyLogger) WarnWithFields added in v0.4.6

func (e *EmptyLogger) WarnWithFields(msg string, fields map[string]interface{})

func (*EmptyLogger) Warnf added in v0.3.0

func (e *EmptyLogger) Warnf(format string, args ...interface{})

func (*EmptyLogger) WithContext

func (e *EmptyLogger) WithContext(ctx context.Context) ILogger

func (*EmptyLogger) WithError

func (e *EmptyLogger) WithError(err error) ILogger

func (*EmptyLogger) WithField

func (e *EmptyLogger) WithField(key string, value interface{}) ILogger

结构化日志构建器方法 - 返回自身以保持链式调用

func (*EmptyLogger) WithFields

func (e *EmptyLogger) WithFields(fields map[string]interface{}) ILogger

type EmptyWriter

type EmptyWriter struct {
	// contains filtered or unexported fields
}

EmptyWriter 是 IWriter 接口的空实现

func NewEmptyWriter

func NewEmptyWriter() *EmptyWriter

NewEmptyWriter 创建一个新的空写入器

func (*EmptyWriter) Close

func (e *EmptyWriter) Close() error

Close 关闭写入器(空实现)

func (*EmptyWriter) Flush

func (e *EmptyWriter) Flush() error

Flush 刷新缓冲区(空实现)

func (*EmptyWriter) GetStats

func (e *EmptyWriter) GetStats() interface{}

GetStats 获取统计信息

func (*EmptyWriter) IsHealthy

func (e *EmptyWriter) IsHealthy() bool

IsHealthy 检查写入器健康状态

func (*EmptyWriter) Write

func (e *EmptyWriter) Write(p []byte) (n int, err error)

Write 写入数据(空实现)

func (*EmptyWriter) WriteLevel

func (e *EmptyWriter) WriteLevel(level LogLevel, data []byte) (n int, err error)

WriteLevel 按级别写入数据(空实现)

type FileLogWriter

type FileLogWriter struct {
	// contains filtered or unexported fields
}

FileLogWriter 文件输出器(支持可配置缓冲区大小)

func (*FileLogWriter) Close

func (w *FileLogWriter) Close() error

Close 关闭文件(确保缓冲刷新)

func (*FileLogWriter) Flush

func (w *FileLogWriter) Flush() error

Flush 刷新文件缓冲区(先刷新缓冲再同步文件)

func (*FileLogWriter) GetStats

func (w *FileLogWriter) GetStats() WriterStatsSnapshot

GetStats 获取统计信息

func (*FileLogWriter) IsHealthy

func (w *FileLogWriter) IsHealthy() bool

IsHealthy 检查健康状态(使用 atomic 快速检查)

func (*FileLogWriter) Write

func (w *FileLogWriter) Write(p []byte) (n int, err error)

Write 实现io.Writer接口(写入缓冲区)

func (*FileLogWriter) WriteLevel

func (w *FileLogWriter) WriteLevel(level LogLevel, data []byte) (n int, err error)

WriteLevel 按级别写入

type FileWriterOption added in v0.4.6

type FileWriterOption func(*FileLogWriter)

FileWriterOption 文件输出器配置选项

func WithFileBufferSize added in v0.4.6

func WithFileBufferSize(size int) FileWriterOption

WithFileBufferSize 设置缓冲区大小(字节)

func WithFileLevel added in v0.4.6

func WithFileLevel(level LogLevel) FileWriterOption

WithFileLevel 设置日志级别

func WithFilePermission added in v0.4.6

func WithFilePermission(permission os.FileMode) FileWriterOption

WithFilePermission 设置文件权限

func WithFileWriterPath added in v0.4.6

func WithFileWriterPath(filePath string) FileWriterOption

WithFileWriterPath 设置文件路径

type FormatType added in v0.4.0

type FormatType string

FormatType 输出格式类型

const (
	FormatText FormatType = "text"
	FormatJSON FormatType = "json"
	FormatXML  FormatType = "xml"
	FormatCSV  FormatType = "csv"
)

type IAdapter

type IAdapter interface {
	ILogger

	// 生命周期管理
	Initialize() error
	Close() error
	Flush() error

	// 适配器特定功能
	GetAdapterName() string
	GetAdapterVersion() string
	IsHealthy() bool
}

IAdapter 日志适配器接口

type IAdvancedLogger

type IAdvancedLogger interface {
	ILogger

	// 采样和限流
	Sample(every int) ILogger
	RateLimit(rate float64) ILogger

	// 异步日志
	Async() ILogger
	Sync() error

	// 缓冲控制
	Buffer(size int) ILogger
	Flush() error

	// 条件日志
	If(condition bool) ILogger
	Unless(condition bool) ILogger
}

高级日志功能接口

type IFileWriter

type IFileWriter interface {
	io.WriteCloser

	// 文件管理
	Rotate() error
	GetCurrentFile() string
	GetFileSize() int64

	// 配置
	SetMaxSize(size int64)
	SetMaxBackups(backups int)
	SetMaxAge(days int)
	SetCompress(compress bool)
}

IFileWriter 文件写入器接口

type IFormatter

type IFormatter interface {
	Format(entry *LogEntry) ([]byte, error)
	GetName() string
}

IFormatter 日志格式化器接口

type IFrameworkAdapter

type IFrameworkAdapter interface {
	ILogger

	// 框架检测
	GetFrameworkName() string
	GetFrameworkVersion() string

	// 原生框架实例
	GetNativeLogger() interface{}

	// 配置同步
	SyncConfig() error
}

通用日志适配器接口

type IHook

type IHook interface {
	Fire(entry *LogEntry) error
	Levels() []LogLevel
}

IHook 日志钩子接口

type ILogBuilder

type ILogBuilder interface {
	Level(level LogLevel) ILogBuilder
	Message(msg string) ILogBuilder
	Field(key string, value interface{}) ILogBuilder
	Fields(fields map[string]interface{}) ILogBuilder
	Error(err error) ILogBuilder
	Context(ctx context.Context) ILogBuilder
	Caller(skip int) ILogBuilder
	Timestamp(t interface{}) ILogBuilder
	Build() *LogEntry
	Log()
}

构建器模式接口

type ILogger

type ILogger interface {
	// 基本日志方法(Printf风格)
	Debug(format string, args ...interface{})
	Info(format string, args ...interface{})
	Warn(format string, args ...interface{})
	Error(format string, args ...interface{})
	Fatal(format string, args ...interface{})

	// Printf风格日志方法(与上面相同,但命名更明确)
	Debugf(format string, args ...interface{})
	Infof(format string, args ...interface{})
	Warnf(format string, args ...interface{})
	Errorf(format string, args ...interface{})
	Fatalf(format string, args ...interface{})

	// 纯文本日志方法(支持单个消息)
	DebugMsg(msg string)
	InfoMsg(msg string)
	WarnMsg(msg string)
	ErrorMsg(msg string)
	FatalMsg(msg string)

	// 返回错误的日志方法(记录日志并返回错误)
	DebugReturn(format string, args ...interface{}) error
	InfoReturn(format string, args ...interface{}) error
	WarnReturn(format string, args ...interface{}) error
	ErrorReturn(format string, args ...interface{}) error

	// 返回错误的上下文日志方法
	DebugCtxReturn(ctx context.Context, format string, args ...interface{}) error
	InfoCtxReturn(ctx context.Context, format string, args ...interface{}) error
	WarnCtxReturn(ctx context.Context, format string, args ...interface{}) error
	ErrorCtxReturn(ctx context.Context, format string, args ...interface{}) error

	// 返回错误的键值对日志方法
	DebugKVReturn(msg string, keysAndValues ...interface{}) error
	InfoKVReturn(msg string, keysAndValues ...interface{}) error
	WarnKVReturn(msg string, keysAndValues ...interface{}) error
	ErrorKVReturn(msg string, keysAndValues ...interface{}) error

	// 带上下文的日志方法
	DebugContext(ctx context.Context, format string, args ...interface{})
	InfoContext(ctx context.Context, format string, args ...interface{})
	WarnContext(ctx context.Context, format string, args ...interface{})
	ErrorContext(ctx context.Context, format string, args ...interface{})
	FatalContext(ctx context.Context, format string, args ...interface{})

	// 结构化日志方法(键值对)
	DebugKV(msg string, keysAndValues ...interface{})
	InfoKV(msg string, keysAndValues ...interface{})
	WarnKV(msg string, keysAndValues ...interface{})
	ErrorKV(msg string, keysAndValues ...interface{})
	FatalKV(msg string, keysAndValues ...interface{})

	// 结构化日志方法(字段映射)- 直接支持 map[string]interface{}
	DebugWithFields(msg string, fields map[string]interface{})
	InfoWithFields(msg string, fields map[string]interface{})
	WarnWithFields(msg string, fields map[string]interface{})
	ErrorWithFields(msg string, fields map[string]interface{})
	FatalWithFields(msg string, fields map[string]interface{})

	// 带上下文的结构化日志方法(键值对)
	DebugContextKV(ctx context.Context, msg string, keysAndValues ...interface{})
	InfoContextKV(ctx context.Context, msg string, keysAndValues ...interface{})
	WarnContextKV(ctx context.Context, msg string, keysAndValues ...interface{})
	ErrorContextKV(ctx context.Context, msg string, keysAndValues ...interface{})
	FatalContextKV(ctx context.Context, msg string, keysAndValues ...interface{})

	// 多行日志方法(自动处理多行格式)
	InfoLines(lines ...string)
	ErrorLines(lines ...string)
	WarnLines(lines ...string)
	DebugLines(lines ...string)

	// 原始日志条目方法(最灵活)
	Log(level LogLevel, msg string)
	LogContext(ctx context.Context, level LogLevel, msg string)
	LogKV(level LogLevel, msg string, keysAndValues ...interface{})
	LogWithFields(level LogLevel, msg string, fields map[string]interface{})

	// 配置方法
	SetLevel(level LogLevel)
	GetLevel() LogLevel
	SetShowCaller(show bool)
	IsShowCaller() bool
	IsLevelEnabled(level LogLevel) bool

	// 结构化日志构建器
	WithField(key string, value interface{}) ILogger
	WithFields(fields map[string]interface{}) ILogger
	WithError(err error) ILogger
	WithContext(ctx context.Context) ILogger

	// 实用方法
	Print(args ...interface{})                 // 兼容标准log包
	Printf(format string, args ...interface{}) // 兼容标准log包
	Println(args ...interface{})               // 兼容标准log包

	// Console 风格日志功能
	NewConsoleGroup() *ConsoleGroup                          // 创建控制台分组
	ConsoleGroup(label string, args ...interface{})          // 开始日志分组
	ConsoleGroupCollapsed(label string, args ...interface{}) // 开始折叠分组
	ConsoleGroupEnd()                                        // 结束当前分组
	ConsoleTable(data interface{})                           // 显示表格
	ConsoleTime(label string) *Timer                         // 开始计时
}

ILogger 增强的日志记录器接口,支持多种参数格式

var (
	// NoLogger 全局的空日志实例,用于禁用所有日志输出
	NoLogger ILogger = NewEmptyLogger()

	// DiscardLogger 废弃所有日志的实例,与NoLogger功能相同
	DiscardLogger ILogger = NewEmptyLogger()

	// NullLogger 空日志实例,用于测试场景
	NullLogger ILogger = NewEmptyLogger()
)

全局空日志实例

func WrapWithEmpty

func WrapWithEmpty(original ILogger) ILogger

WrapWithEmpty 将任何日志器包装为空实现(用于临时禁用日志)

type ILogrusLogger

type ILogrusLogger interface {
	// Logrus特有方法
	Trace(args ...interface{})
}

ILogrusLogger Logrus日志框架兼容接口

type IManager

type IManager interface {
	// 适配器管理
	AddAdapter(name string, adapter IAdapter) error
	GetAdapter(name string) (IAdapter, bool)
	RemoveAdapter(name string) error
	ListAdapters() []string

	// 生命周期管理
	CloseAll() error
	FlushAll() error

	// 全局设置
	SetLevelAll(level LogLevel)
	Broadcast(level LogLevel, format string, args ...interface{})

	// 健康检查
	HealthCheck() map[string]bool
}

IManager 日志管理器接口

type IMiddleware

type IMiddleware interface {
	Process(entry *LogEntry, next func(*LogEntry) error) error
	GetName() string
	GetPriority() int
}

IMiddleware 日志中间件接口

type ISlogLogger

type ISlogLogger interface {
	// slog特有方法
	LogAttrs(ctx context.Context, level LogLevel, msg string, attrs ...interface{})
	With(args ...interface{}) ISlogLogger
	WithGroup(name string) ISlogLogger
}

ISlogLogger 标准库slog兼容接口

type IWriter

type IWriter interface {
	io.Writer

	// 写入控制
	WriteLevel(level LogLevel, data []byte) (n int, err error)
	Flush() error
	Close() error

	// 状态查询
	IsHealthy() bool
	GetStats() WriterStatsSnapshot
}

IWriter 日志写入器接口

func CreateWriter added in v0.4.6

func CreateWriter(config *WriterConfig) (IWriter, error)

CreateWriter 根据配置创建 Writer

func NewBufferedWriter

func NewBufferedWriter(opts ...BufferedWriterOption) IWriter

NewBufferedWriter 创建缓冲输出器

func NewConsoleWriter

func NewConsoleWriter(opts ...ConsoleWriterOption) IWriter

NewConsoleWriter 创建控制台输出器

func NewFileWriter

func NewFileWriter(opts ...FileWriterOption) IWriter

NewFileWriter 创建文件输出器

func NewMultiWriter

func NewMultiWriter(opts ...MultiWriterOption) IWriter

NewMultiWriter 创建多输出器

func NewRotateWriter

func NewRotateWriter(opts ...RotateWriterOption) IWriter

NewRotateWriter 创建轮转文件输出器

type IZapLogger

type IZapLogger interface {
	// Zap特有方法
	DPanic(msg string, fields ...interface{})
	Sync() error
	Sugar() ILogger
}

IZapLogger Zap日志框架兼容接口

type IZerologLogger

type IZerologLogger interface {
	// Zerolog链式方法
	Str(key, val string) IZerologLogger
	Int(key string, i int) IZerologLogger
	Float64(key string, f float64) IZerologLogger
	Bool(key string, b bool) IZerologLogger
	Time(key string, t interface{}) IZerologLogger
	Dur(key string, d interface{}) IZerologLogger
	Msg(msg string)
	Msgf(format string, v ...interface{})
}

IZerologLogger Zerolog兼容接口

type LevelInfo added in v0.4.0

type LevelInfo struct {
	Name        string `json:"name"`        // 级别名称
	ShortName   string `json:"short_name"`  // 短名称
	Emoji       string `json:"emoji"`       // 表情符号
	Color       string `json:"color"`       // 颜色代码
	Priority    int    `json:"priority"`    // 优先级
	Description string `json:"description"` // 描述
	Category    string `json:"category"`    // 类别
}

LevelInfo 级别信息结构

type LogArgs

type LogArgs struct {
	Format  string
	Args    []interface{}
	Fields  map[string]interface{}
	Context context.Context
}

日志参数辅助类型

type LogEntry

type LogEntry struct {
	Level     LogLevel               `json:"level"`
	Message   string                 `json:"message"`
	Timestamp int64                  `json:"timestamp"`
	Fields    map[string]interface{} `json:"fields,omitempty"`
	Caller    *CallerInfo            `json:"caller,omitempty"`
}

LogEntry 日志条目

type LogLevel

type LogLevel int

LogLevel 日志级别类型 (保持向后兼容)

const (
	DEBUG LogLevel = iota // 调试级别 - 最详细的信息
	INFO                  // 信息级别 - 一般信息
	WARN                  // 警告级别 - 警告信息
	ERROR                 // 错误级别 - 错误信息
	FATAL                 // 致命级别 - 致命错误,程序将退出
)

基础日志级别常量 (保持现有API兼容性)

const (
	TRACE LogLevel = -1 // 跟踪级别 - 更详细的调试信息
	OFF   LogLevel = 99 // 关闭级别 - 禁用所有日志
)

扩展级别常量 (新增的高级功能)

const (
	SYSTEM      LogLevel = 100 + iota // 系统级信息
	KERNEL                            // 内核级信息
	DRIVER                            // 驱动级信息
	APPLICATION                       // 应用级信息
	SERVICE                           // 服务级信息
	COMPONENT                         // 组件级信息
	MODULE                            // 模块级信息
)

系统级扩展级别

const (
	BUSINESS    LogLevel = 200 + iota // 业务级信息
	TRANSACTION                       // 事务级信息
	WORKFLOW                          // 工作流信息
	PROCESS                           // 流程级信息
)

业务级扩展级别

const (
	SECURITY   LogLevel = 300 + iota // 安全级信息
	AUDIT                            // 审计级信息
	COMPLIANCE                       // 合规级信息
	THREAT                           // 威胁级信息
)

安全级扩展级别

const (
	PERFORMANCE LogLevel = 400 + iota // 性能级信息
	METRIC                            // 指标级信息
	BENCHMARK                         // 基准测试信息
	PROFILING                         // 性能分析信息
)

性能级扩展级别

func GetAllExtendedLevels added in v0.4.0

func GetAllExtendedLevels() []LogLevel

GetAllExtendedLevels 获取所有级别(包括扩展级别)

func GetAllLevels

func GetAllLevels() []LogLevel

GetAllLevels 获取所有基础级别 (保持向后兼容)

func GetBasicLevels added in v0.4.0

func GetBasicLevels() []LogLevel

GetBasicLevels 获取基础级别

func GetExtendedLevels added in v0.4.0

func GetExtendedLevels() []LogLevel

GetExtendedLevels 获取扩展级别(不包括基础级别)

func GetLevelsByCategory added in v0.4.0

func GetLevelsByCategory(category string) []LogLevel

GetLevelsByCategory 根据类别获取级别

func ParseLevel

func ParseLevel(level string) (LogLevel, error)

ParseLevel 从字符串解析日志级别(支持大小写)

func (LogLevel) Category added in v0.4.0

func (l LogLevel) Category() string

Category 返回级别的类别

func (LogLevel) Color

func (l LogLevel) Color() string

Color 返回日志级别的颜色代码

func (LogLevel) Description added in v0.4.0

func (l LogLevel) Description() string

Description 返回级别的描述

func (LogLevel) Emoji

func (l LogLevel) Emoji() string

Emoji 返回日志级别的emoji

func (LogLevel) Info added in v0.4.0

func (l LogLevel) Info() LevelInfo

Info 返回级别的完整信息

func (LogLevel) IsApplication added in v0.4.0

func (l LogLevel) IsApplication() bool

IsApplication 检查是否为应用级别

func (LogLevel) IsBasic added in v0.4.0

func (l LogLevel) IsBasic() bool

IsBasic 检查是否为基础级别

func (LogLevel) IsBusiness added in v0.4.0

func (l LogLevel) IsBusiness() bool

IsBusiness 检查是否为业务级别

func (LogLevel) IsEnabled

func (l LogLevel) IsEnabled(target LogLevel) bool

IsEnabled 检查当前级别是否启用目标级别

func (LogLevel) IsPerformance added in v0.4.0

func (l LogLevel) IsPerformance() bool

IsPerformance 检查是否为性能级别

func (LogLevel) IsSecurity added in v0.4.0

func (l LogLevel) IsSecurity() bool

IsSecurity 检查是否为安全级别

func (LogLevel) IsSystem added in v0.4.0

func (l LogLevel) IsSystem() bool

IsSystem 检查是否为系统级别

func (LogLevel) IsValid added in v0.4.0

func (l LogLevel) IsValid() bool

IsValid 检查级别是否有效

func (LogLevel) MarshalText added in v0.4.6

func (l LogLevel) MarshalText() ([]byte, error)

MarshalText 实现文本序列化(用于 JSON 等)

func (LogLevel) Priority added in v0.4.0

func (l LogLevel) Priority() int

Priority 返回级别的优先级

func (LogLevel) ShortString added in v0.4.0

func (l LogLevel) ShortString() string

ShortString 返回级别的短字符串表示

func (LogLevel) String

func (l LogLevel) String() string

String 返回日志级别的字符串表示

func (*LogLevel) UnmarshalText added in v0.4.6

func (l *LogLevel) UnmarshalText(text []byte) error

UnmarshalText 实现文本反序列化(用于 JSON 等)

func (*LogLevel) UnmarshalYAML added in v0.4.6

func (l *LogLevel) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML 实现 YAML 反序列化,支持字符串和整数值

type Logger

type Logger struct {
	// contains filtered or unexported fields
}

Logger 主要的日志记录器结构体

func GetGlobalLogger

func GetGlobalLogger() *Logger

GetGlobalLogger 获取全局Logger

func New added in v0.4.0

func New() *Logger

New 创建新的日志记录器(简化版本)

func NewLogger

func NewLogger() *Logger

NewLogger 创建新的日志记录器(默认配置)

func (*Logger) Audit added in v0.4.6

func (l *Logger) Audit(action, user, resource, result string)

Audit 审计日志(AUDIT 级别)

func (*Logger) Cache added in v0.4.6

func (l *Logger) Cache(format string, args ...any)

Cache 缓存日志(INFO 级别)

func (*Logger) Clone

func (l *Logger) Clone() ILogger

func (*Logger) ConfigLog added in v0.4.6

func (l *Logger) ConfigLog(format string, args ...any)

ConfigLog 配置日志(INFO 级别)

func (*Logger) ConsoleGroup added in v0.4.6

func (l *Logger) ConsoleGroup(label string, args ...any)

ConsoleGroup 开始一个新的日志分组

func (*Logger) ConsoleGroupCollapsed added in v0.4.6

func (l *Logger) ConsoleGroupCollapsed(label string, args ...any)

ConsoleGroupCollapsed 开始一个折叠的日志分组

func (*Logger) ConsoleGroupEnd added in v0.4.6

func (l *Logger) ConsoleGroupEnd()

ConsoleGroupEnd 结束当前分组

func (*Logger) ConsoleTable added in v0.4.6

func (l *Logger) ConsoleTable(data any)

ConsoleTable 显示表格

func (*Logger) ConsoleTime added in v0.4.6

func (l *Logger) ConsoleTime(label string) *Timer

ConsoleTime 开始计时

func (*Logger) Database added in v0.4.6

func (l *Logger) Database(format string, args ...any)

Database 数据库日志(INFO 级别)

func (*Logger) Debug

func (l *Logger) Debug(format string, args ...any)

Debug 调试日志

func (*Logger) DebugContext

func (l *Logger) DebugContext(ctx context.Context, format string, args ...any)

带上下文的日志方法

func (*Logger) DebugContextKV added in v0.4.3

func (l *Logger) DebugContextKV(ctx context.Context, msg string, keysAndValues ...any)

func (*Logger) DebugCtxReturn added in v0.4.6

func (l *Logger) DebugCtxReturn(ctx context.Context, format string, args ...any) error

DebugCtxReturn 记录带上下文的调试日志并返回格式化的错误

func (*Logger) DebugKV

func (l *Logger) DebugKV(msg string, keysAndValues ...any)

结构化日志方法(键值对)

func (*Logger) DebugKVReturn added in v0.4.6

func (l *Logger) DebugKVReturn(msg string, keysAndValues ...any) error

DebugKVReturn 记录带键值对的调试日志并返回错误

func (*Logger) DebugLines added in v0.4.2

func (l *Logger) DebugLines(lines ...string)

func (*Logger) DebugMsg

func (l *Logger) DebugMsg(msg string)

纯文本日志方法

func (*Logger) DebugReturn added in v0.4.6

func (l *Logger) DebugReturn(format string, args ...any) error

DebugReturn 记录调试日志并返回格式化的错误

func (*Logger) DebugWithFields added in v0.4.6

func (l *Logger) DebugWithFields(msg string, fields map[string]any)

字段映射方法(直接支持 map[string]any)

func (*Logger) Debugf added in v0.3.0

func (l *Logger) Debugf(format string, args ...any)

Printf风格方法(与上面相同,但命名更明确)

func (*Logger) Environment added in v0.4.6

func (l *Logger) Environment(format string, args ...any)

Environment 环境日志(INFO 级别)

func (*Logger) Error

func (l *Logger) Error(format string, args ...any)

Error 错误日志

func (*Logger) ErrorContext

func (l *Logger) ErrorContext(ctx context.Context, format string, args ...any)

func (*Logger) ErrorContextKV added in v0.4.3

func (l *Logger) ErrorContextKV(ctx context.Context, msg string, keysAndValues ...any)

func (*Logger) ErrorCtxReturn added in v0.4.6

func (l *Logger) ErrorCtxReturn(ctx context.Context, format string, args ...any) error

ErrorCtxReturn 记录带上下文的错误日志并返回格式化的错误

func (*Logger) ErrorKV

func (l *Logger) ErrorKV(msg string, keysAndValues ...any)

func (*Logger) ErrorKVReturn added in v0.4.6

func (l *Logger) ErrorKVReturn(msg string, keysAndValues ...any) error

ErrorKVReturn 记录带键值对的错误日志并返回错误

func (*Logger) ErrorLines added in v0.4.2

func (l *Logger) ErrorLines(lines ...string)

func (*Logger) ErrorMsg

func (l *Logger) ErrorMsg(msg string)

func (*Logger) ErrorReturn added in v0.4.6

func (l *Logger) ErrorReturn(format string, args ...any) error

ErrorReturn 记录错误日志并返回格式化的错误

func (*Logger) ErrorWithFields added in v0.4.6

func (l *Logger) ErrorWithFields(msg string, fields map[string]any)

func (*Logger) Errorf added in v0.3.0

func (l *Logger) Errorf(format string, args ...any)

func (*Logger) Fatal

func (l *Logger) Fatal(format string, args ...any)

Fatal 致命错误日志

func (*Logger) FatalContext

func (l *Logger) FatalContext(ctx context.Context, format string, args ...any)

func (*Logger) FatalContextKV added in v0.4.3

func (l *Logger) FatalContextKV(ctx context.Context, msg string, keysAndValues ...any)

func (*Logger) FatalKV

func (l *Logger) FatalKV(msg string, keysAndValues ...any)

func (*Logger) FatalMsg

func (l *Logger) FatalMsg(msg string)

func (*Logger) FatalWithFields added in v0.4.6

func (l *Logger) FatalWithFields(msg string, fields map[string]any)

func (*Logger) Fatalf added in v0.3.0

func (l *Logger) Fatalf(format string, args ...any)

func (*Logger) GetContextExtractor added in v0.4.6

func (l *Logger) GetContextExtractor() ContextExtractor

GetContextExtractor 获取当前的上下文提取器

func (*Logger) GetLevel

func (l *Logger) GetLevel() LogLevel

GetLevel 获取当前日志级别

func (*Logger) Health added in v0.4.6

func (l *Logger) Health(service string, status bool, details string)

Health 健康检查日志(WARN 级别用于不健康,INFO 级别用于健康)

func (*Logger) Info

func (l *Logger) Info(format string, args ...any)

Info 信息日志

func (*Logger) InfoContext

func (l *Logger) InfoContext(ctx context.Context, format string, args ...any)

func (*Logger) InfoContextKV added in v0.4.3

func (l *Logger) InfoContextKV(ctx context.Context, msg string, keysAndValues ...any)

func (*Logger) InfoCtxReturn added in v0.4.6

func (l *Logger) InfoCtxReturn(ctx context.Context, format string, args ...any) error

InfoCtxReturn 记录带上下文的信息日志并返回格式化的错误

func (*Logger) InfoKV

func (l *Logger) InfoKV(msg string, keysAndValues ...any)

func (*Logger) InfoKVReturn added in v0.4.6

func (l *Logger) InfoKVReturn(msg string, keysAndValues ...any) error

InfoKVReturn 记录带键值对的信息日志并返回错误

func (*Logger) InfoLines added in v0.4.2

func (l *Logger) InfoLines(lines ...string)

多行日志方法 - 自动处理换行符

func (*Logger) InfoMsg

func (l *Logger) InfoMsg(msg string)

func (*Logger) InfoReturn added in v0.4.6

func (l *Logger) InfoReturn(format string, args ...any) error

InfoReturn 记录信息日志并返回格式化的错误

func (*Logger) InfoWithFields added in v0.4.6

func (l *Logger) InfoWithFields(msg string, fields map[string]any)

func (*Logger) Infof added in v0.3.0

func (l *Logger) Infof(format string, args ...any)

func (*Logger) IsLevelEnabled

func (l *Logger) IsLevelEnabled(level LogLevel) bool

IsLevelEnabled 检查给定级别是否启用

func (*Logger) IsShowCaller

func (l *Logger) IsShowCaller() bool

IsShowCaller 检查是否显示调用者信息

func (*Logger) Loading added in v0.4.6

func (l *Logger) Loading(format string, args ...any)

Loading 加载日志(INFO 级别)

func (*Logger) Log

func (l *Logger) Log(level LogLevel, msg string)

原始日志条目方法

func (*Logger) LogContext

func (l *Logger) LogContext(ctx context.Context, level LogLevel, msg string)

func (*Logger) LogKV

func (l *Logger) LogKV(level LogLevel, msg string, keysAndValues ...any)

func (*Logger) LogWithFields

func (l *Logger) LogWithFields(level LogLevel, msg string, fields map[string]any)

func (*Logger) Milestone added in v0.4.6

func (l *Logger) Milestone(message string)

Milestone 里程碑日志(INFO 级别)

func (*Logger) Network added in v0.4.6

func (l *Logger) Network(format string, args ...any)

Network 网络日志(INFO 级别)

func (*Logger) NewConsoleGroup added in v0.4.6

func (l *Logger) NewConsoleGroup() *ConsoleGroup

NewConsoleGroup 创建新的控制台分组 继承 logger 的 output(可能是 buffer/stdout/文件),但不走 logger 格式化

func (*Logger) Performance added in v0.4.6

func (l *Logger) Performance(operation string, duration time.Duration, details ...map[string]any)

Performance 性能日志(PERFORMANCE 级别,支持可选的详细信息)

func (*Logger) Print

func (l *Logger) Print(args ...any)

兼容标准log包的方法

func (*Logger) Printf

func (l *Logger) Printf(format string, args ...any)

func (*Logger) Println

func (l *Logger) Println(args ...any)

func (*Logger) Progress added in v0.4.6

func (l *Logger) Progress(current, total int, operation string)

Progress 进度日志(INFO 级别)

func (*Logger) Security added in v0.4.6

func (l *Logger) Security(format string, args ...any)

Security 安全日志(SECURITY 级别)

func (*Logger) SetContextExtractor added in v0.4.6

func (l *Logger) SetContextExtractor(extractor ContextExtractor)

SetContextExtractor 设置自定义上下文提取器

func (*Logger) SetLevel

func (l *Logger) SetLevel(level LogLevel)

SetLevel 设置日志级别

func (*Logger) SetShowCaller

func (l *Logger) SetShowCaller(show bool)

SetShowCaller 设置是否显示调用者信息

func (*Logger) Start added in v0.4.6

func (l *Logger) Start(format string, args ...any)

Start 启动日志(INFO 级别)

func (*Logger) StartTiming added in v0.4.6

func (l *Logger) StartTiming(operation string) *Timing

StartTiming 开始计时

func (*Logger) Stop added in v0.4.6

func (l *Logger) Stop(format string, args ...any)

Stop 停止日志(INFO 级别)

func (*Logger) Success added in v0.4.6

func (l *Logger) Success(format string, args ...any)

Success 成功日志(INFO 级别)

func (*Logger) Warn

func (l *Logger) Warn(format string, args ...any)

Warn 警告日志

func (*Logger) WarnContext

func (l *Logger) WarnContext(ctx context.Context, format string, args ...any)

func (*Logger) WarnContextKV added in v0.4.3

func (l *Logger) WarnContextKV(ctx context.Context, msg string, keysAndValues ...any)

func (*Logger) WarnCtxReturn added in v0.4.6

func (l *Logger) WarnCtxReturn(ctx context.Context, format string, args ...any) error

WarnCtxReturn 记录带上下文的警告日志并返回格式化的错误

func (*Logger) WarnKV

func (l *Logger) WarnKV(msg string, keysAndValues ...any)

func (*Logger) WarnKVReturn added in v0.4.6

func (l *Logger) WarnKVReturn(msg string, keysAndValues ...any) error

WarnKVReturn 记录带键值对的警告日志并返回错误

func (*Logger) WarnLines added in v0.4.2

func (l *Logger) WarnLines(lines ...string)

func (*Logger) WarnMsg

func (l *Logger) WarnMsg(msg string)

func (*Logger) WarnReturn added in v0.4.6

func (l *Logger) WarnReturn(format string, args ...any) error

WarnReturn 记录警告日志并返回格式化的错误

func (*Logger) WarnWithFields added in v0.4.6

func (l *Logger) WarnWithFields(msg string, fields map[string]any)

func (*Logger) Warnf added in v0.3.0

func (l *Logger) Warnf(format string, args ...any)

func (*Logger) WithAsyncWrite added in v0.4.6

func (l *Logger) WithAsyncWrite(async bool) *Logger

WithAsyncWrite 设置是否异步写入

func (*Logger) WithBatchSize added in v0.4.6

func (l *Logger) WithBatchSize(size int) *Logger

WithBatchSize 设置批量写入大小

func (*Logger) WithBatchTimeout added in v0.4.6

func (l *Logger) WithBatchTimeout(timeout time.Duration) *Logger

WithBatchTimeout 设置批量写入超时时间

func (*Logger) WithBufferSize added in v0.4.6

func (l *Logger) WithBufferSize(size int) *Logger

WithBufferSize 设置缓冲区大小

func (*Logger) WithCallerDepth added in v0.4.6

func (l *Logger) WithCallerDepth(depth int) *Logger

WithCallerDepth 设置调用者深度

func (*Logger) WithCallerKey added in v0.4.6

func (l *Logger) WithCallerKey(key string) *Logger

WithCallerKey 设置调用者字段名

func (*Logger) WithColorful added in v0.4.0

func (l *Logger) WithColorful(colorful bool) *Logger

WithColorful 设置是否使用彩色输出

func (*Logger) WithContext

func (l *Logger) WithContext(ctx context.Context) ILogger

WithContext 带上下文的logger(当前实现返回自身)

func (*Logger) WithContextExtractor added in v0.4.6

func (l *Logger) WithContextExtractor(extractor ContextExtractor) *Logger

WithContextExtractor 设置上下文提取器

func (*Logger) WithContextKeys added in v0.4.6

func (l *Logger) WithContextKeys(keys ...string) *Logger

WithContextKeys 配置 Logger 在记录 Context 日志时提取哪些 key

func (*Logger) WithError

func (l *Logger) WithError(err error) ILogger

WithError 添加错误信息

func (*Logger) WithField

func (l *Logger) WithField(key string, value any) ILogger

WithField 添加字段信息(结构化日志)

func (*Logger) WithFields

func (l *Logger) WithFields(fields map[string]any) ILogger

WithFields 添加多个字段信息(结构化日志)

func (*Logger) WithFormat added in v0.4.6

func (l *Logger) WithFormat(format FormatType) *Logger

WithFormat 设置输出格式

func (*Logger) WithFormatter added in v0.4.6

func (l *Logger) WithFormatter(formatter IFormatter) *Logger

WithFormatter 设置格式化器

func (*Logger) WithHooks added in v0.4.6

func (l *Logger) WithHooks(hooks []IHook) *Logger

WithHooks 设置钩子列表

func (*Logger) WithLevel added in v0.4.0

func (l *Logger) WithLevel(level LogLevel) *Logger

WithLevel 设置日志级别

func (*Logger) WithLevelKey added in v0.4.6

func (l *Logger) WithLevelKey(key string) *Logger

WithLevelKey 设置日志级别字段名

func (*Logger) WithMessageKey added in v0.4.6

func (l *Logger) WithMessageKey(key string) *Logger

WithMessageKey 设置消息字段名

func (*Logger) WithMiddleware added in v0.4.6

func (l *Logger) WithMiddleware(middleware []IMiddleware) *Logger

WithMiddleware 设置中间件列表

func (*Logger) WithOutput added in v0.4.6

func (l *Logger) WithOutput(output io.Writer) *Logger

WithOutput 设置输出目标

func (*Logger) WithPrefix added in v0.4.0

func (l *Logger) WithPrefix(prefix string) *Logger

WithPrefix 设置日志前缀

func (*Logger) WithShowCaller added in v0.4.0

func (l *Logger) WithShowCaller(show bool) *Logger

WithShowCaller 设置是否显示调用者信息

func (*Logger) WithShowStacktrace added in v0.4.6

func (l *Logger) WithShowStacktrace(show bool) *Logger

WithShowStacktrace 设置是否显示堆栈跟踪

func (*Logger) WithStacktraceKey added in v0.4.6

func (l *Logger) WithStacktraceKey(key string) *Logger

WithStacktraceKey 设置堆栈跟踪字段名

func (*Logger) WithTimeFormat added in v0.4.6

func (l *Logger) WithTimeFormat(format string) *Logger

WithTimeFormat 设置时间格式

func (*Logger) WithTimestampKey added in v0.4.6

func (l *Logger) WithTimestampKey(key string) *Logger

WithTimestampKey 设置时间戳字段名

func (*Logger) WithWriters added in v0.4.6

func (l *Logger) WithWriters(writers []IWriter) *Logger

WithWriters 设置写入器列表

type LoggerStats

type LoggerStats struct {
	StartTime    time.Time          `json:"start_time"`
	TotalLogs    int64              `json:"total_logs"`
	LevelCounts  map[LogLevel]int64 `json:"level_counts"`
	ErrorCount   int64              `json:"error_count"`
	LastLogTime  time.Time          `json:"last_log_time"`
	Uptime       time.Duration      `json:"uptime"`
	BytesWritten int64              `json:"bytes_written"`
	// contains filtered or unexported fields
}

LoggerStats 日志统计信息

func NewLoggerStats

func NewLoggerStats() *LoggerStats

NewLoggerStats 创建新的统计信息

func (*LoggerStats) AddBytes

func (s *LoggerStats) AddBytes(bytes int64)

AddBytes 增加字节数

func (*LoggerStats) GetStats

func (s *LoggerStats) GetStats() *LoggerStats

GetStats 获取统计信息快照

func (*LoggerStats) IncrementLevel

func (s *LoggerStats) IncrementLevel(level LogLevel)

IncrementLevel 增加级别计数

type MultiLogWriter

type MultiLogWriter struct {
	// contains filtered or unexported fields
}

MultiLogWriter 多输出器(同时写入多个输出器,实现日志分发)

func (*MultiLogWriter) Close

func (w *MultiLogWriter) Close() error

Close 关闭所有输出器

func (*MultiLogWriter) Flush

func (w *MultiLogWriter) Flush() error

Flush 刷新所有输出器

func (*MultiLogWriter) GetStats

func (w *MultiLogWriter) GetStats() WriterStatsSnapshot

GetStats 获取统计信息

func (*MultiLogWriter) IsHealthy

func (w *MultiLogWriter) IsHealthy() bool

IsHealthy 检查是否至少有一个输出器健康

func (*MultiLogWriter) Write

func (w *MultiLogWriter) Write(p []byte) (n int, err error)

Write 实现io.Writer接口

func (*MultiLogWriter) WriteLevel

func (w *MultiLogWriter) WriteLevel(level LogLevel, data []byte) (n int, err error)

WriteLevel 按级别写入

type MultiWriterOption added in v0.4.6

type MultiWriterOption func(*MultiLogWriter)

MultiWriterOption 多输出器配置选项

func WithMultiLevel added in v0.4.6

func WithMultiLevel(level LogLevel) MultiWriterOption

WithMultiLevel 设置日志级别

func WithWriters added in v0.4.6

func WithWriters(writers ...IWriter) MultiWriterOption

WithWriters 设置输出器列表

type OutputType added in v0.4.6

type OutputType string

OutputType 输出类型

const (
	OutputConsole OutputType = "console" // 控制台输出
	OutputFile    OutputType = "file"    // 文件输出
	OutputRotate  OutputType = "rotate"  // 轮转文件输出
	OutputStdout  OutputType = "stdout"  // 标准输出
	OutputStderr  OutputType = "stderr"  // 标准错误输出
)

type PerformanceLevel added in v0.4.6

type PerformanceLevel struct {
	Threshold time.Duration
	Emoji     string
	Level     string
}

PerformanceLevel 性能级别定义

type RotateLogWriter

type RotateLogWriter struct {
	// contains filtered or unexported fields
}

RotateLogWriter 轮转文件输出器(支持按大小自动轮转,支持可配置缓冲区)

func (*RotateLogWriter) Close

func (w *RotateLogWriter) Close() error

Close 关闭输出器(确保缓冲刷新)

func (*RotateLogWriter) Flush

func (w *RotateLogWriter) Flush() error

Flush 刷新缓冲区(刷新缓冲和文件)

func (*RotateLogWriter) GetStats

func (w *RotateLogWriter) GetStats() WriterStatsSnapshot

GetStats 获取统计信息

func (*RotateLogWriter) IsHealthy

func (w *RotateLogWriter) IsHealthy() bool

IsHealthy 检查健康状态(使用 atomic 快速检查)

func (*RotateLogWriter) Write

func (w *RotateLogWriter) Write(p []byte) (n int, err error)

Write 实现io.Writer接口(写入缓冲区)

func (*RotateLogWriter) WriteLevel

func (w *RotateLogWriter) WriteLevel(level LogLevel, data []byte) (n int, err error)

WriteLevel 按级别写入

type RotateWriterOption added in v0.4.6

type RotateWriterOption func(*RotateLogWriter)

RotateWriterOption 轮转文件输出器配置选项

func WithCompress added in v0.4.6

func WithCompress(compress bool) RotateWriterOption

WithCompress 设置是否压缩旧文件

func WithFilePath added in v0.4.6

func WithFilePath(filePath string) RotateWriterOption

WithFilePath 设置文件路径

func WithMaxAge added in v0.4.6

func WithMaxAge(maxAge time.Duration) RotateWriterOption

WithMaxAge 设置最大保留时间

func WithMaxFiles added in v0.4.6

func WithMaxFiles(maxFiles int) RotateWriterOption

WithMaxFiles 设置最大文件数

func WithMaxSize added in v0.4.6

func WithMaxSize(maxSize int64) RotateWriterOption

WithMaxSize 设置最大文件大小(字节)

func WithRotateBufferSize added in v0.4.6

func WithRotateBufferSize(size int) RotateWriterOption

WithRotateBufferSize 设置缓冲区大小(字节)

func WithRotateLevel added in v0.4.6

func WithRotateLevel(level LogLevel) RotateWriterOption

WithRotateLevel 设置日志级别

func WithRotatePermission added in v0.4.6

func WithRotatePermission(permission os.FileMode) RotateWriterOption

WithRotatePermission 设置文件权限

type SpecialLogType

type SpecialLogType struct {
	// contains filtered or unexported fields
}

SpecialLogType 特殊日志类型

type Timer added in v0.4.6

type Timer struct {
	// contains filtered or unexported fields
}

Timer 计时器 输出直接写入 output(默认 os.Stdout),不走 logger 格式化

func NewTimer added in v0.4.6

func NewTimer(output io.Writer, label string, indentLevel int) *Timer

NewTimer 创建新的计时器 output 为输出目标,传入 nil 则使用 os.Stdout 注意:如果多个 Timer 共享同一个 io.Writer,该 Writer 必须是线程安全的(如 os.Stdout)

func (*Timer) Elapsed added in v0.4.6

func (t *Timer) Elapsed() time.Duration

Elapsed 获取已经过的时间(不输出日志)

func (*Timer) End added in v0.4.6

func (t *Timer) End() time.Duration

End 结束计时并输出耗时 类似 JavaScript console.timeEnd()

func (*Timer) Log added in v0.4.6

func (t *Timer) Log(msg string, args ...interface{}) time.Duration

Log 输出当前耗时(不结束计时) 类似 JavaScript console.timeLog()

type Timing

type Timing struct {
	// contains filtered or unexported fields
}

Timing 计时器辅助结构

func (*Timing) AddDetail

func (t *Timing) AddDetail(key string, value any) *Timing

AddDetail 添加详细信息

func (*Timing) End

func (t *Timing) End() time.Duration

End 结束计时并记录性能日志

type WriterConfig added in v0.4.6

type WriterConfig struct {
	Type       OutputType  `json:"type" yaml:"type"`               // 输出类型
	FilePath   string      `json:"file_path" yaml:"file_path"`     // 文件路径
	MaxSize    int64       `json:"max_size" yaml:"max_size"`       // 最大文件大小(字节)
	MaxFiles   int         `json:"max_files" yaml:"max_files"`     // 最大文件数
	MaxAge     int         `json:"max_age" yaml:"max_age"`         // 最大保存天数
	Compress   bool        `json:"compress" yaml:"compress"`       // 是否压缩
	Permission os.FileMode `json:"permission" yaml:"permission"`   // 文件权限
	BufferSize int         `json:"buffer_size" yaml:"buffer_size"` // 缓冲区大小
	Output     io.Writer   `json:"-" yaml:"-"`                     // 自定义输出
}

WriterConfig Writer 配置

type WriterStatsSnapshot added in v0.4.6

type WriterStatsSnapshot struct {
	BytesWritten int64         `json:"bytes_written"` // 已写入字节总数
	LinesWritten int64         `json:"lines_written"` // 已写入行数总数
	ErrorCount   int64         `json:"error_count"`   // 错误次数总数
	LastWrite    time.Time     `json:"last_write"`    // 最后一次写入时间
	StartTime    time.Time     `json:"start_time"`    // 输出器启动时间
	Uptime       time.Duration `json:"uptime"`        // 运行时长
}

WriterStatsSnapshot 统计信息快照(用于外部访问的只读数据)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL