log

package
v0.0.16 Latest Latest
Warning

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

Go to latest
Published: Jun 28, 2026 License: MIT Imports: 9 Imported by: 1

README

log

简介

log 包提供了一个统一的日志接口和多种日志实现,支持结构化日志记录、多种输出格式和灵活的配置选项。该包设计用于满足不同场景下的日志需求,从简单的控制台输出到复杂的生产环境日志记录都能胜任。

主要特性
  • 统一的日志接口,支持多种日志后端(标准库、Logrus)
  • 支持结构化日志记录,方便日志分析和处理
  • 支持多个日志级别(Debug、Info、Warn、Error、Fatal)
  • 支持文件输出和标准输出
  • 支持日志文件自动滚动和保留期限设置
  • 支持 JSON 和文本两种输出格式
  • 支持字段注入和链式调用
  • 线程安全的全局日志实例管理
  • 完整的单元测试覆盖
设计理念

该包的设计遵循以下原则:

  1. 统一接口:通过 Logger 接口定义统一的日志行为,使不同的日志实现可以无缝切换。

  2. 可扩展性:采用接口设计和函数式配置,方便扩展新的日志实现和配置选项。

  3. 易用性:提供简单直观的 API,支持链式调用,使日志记录更加便捷。

  4. 灵活性:支持多种日志格式和输出方式,满足不同场景的需求。

  5. 性能:通过级别控制和格式优化,确保日志记录的性能开销最小化。

安装

前置条件
  • Go 版本要求:>= 1.16
  • 依赖要求:
    • github.com/sirupsen/logrus v1.8.1
    • github.com/lestrrat-go/file-rotatelogs v2.4.0
安装命令
go get -u github.com/fsyyft-go/kit/log

快速开始

基础用法
// 使用默认配置初始化日志
if err := log.InitLogger(); err != nil {
    panic(err)
}

// 记录不同级别的日志
log.Info("应用启动")
log.WithField("user", "admin").Info("用户登录")
log.Error("发生错误")
配置选项
// 使用自定义配置初始化日志
if err := log.InitLogger(
    log.WithLogType(log.LogTypeLogrus),
    log.WithLevel(log.DebugLevel),
    log.WithOutput("/var/log/app.log"),
    log.WithEnableRotate(true),
    log.WithRotateTime(time.Hour * 24),
    log.WithMaxAge(time.Hour * 24 * 7),
); err != nil {
    panic(err)
}

详细指南

核心概念
  1. 日志级别:日志分为 Debug、Info、Warn、Error、Fatal 五个级别,级别越高表示日志越重要。

  2. 结构化字段:支持添加键值对形式的结构化信息,方便日志分析。

  3. 日志滚动:支持按时间自动滚动日志文件,并可设置日志保留时间。

常见用例
1. 使用结构化字段记录日志
logger.WithFields(map[string]interface{}{
    "user_id": "12345",
    "action": "login",
    "status": "success",
}).Info("用户登录成功")
2. 配置日志滚动
if err := log.InitLogger(
    log.WithLogType(log.LogTypeLogrus),
    log.WithOutput("/var/log/app.log"),
    log.WithEnableRotate(true),
    log.WithRotateTime(time.Hour * 24),  // 每天滚动
    log.WithMaxAge(time.Hour * 24 * 7),  // 保留7天
); err != nil {
    panic(err)
}
最佳实践
  • 合理设置日志级别,开发环境可使用 Debug 级别,生产环境建议使用 Info 级别
  • 使用结构化字段记录关键信息,方便后续分析
  • 在生产环境中启用日志滚动,防止日志文件过大
  • 使用全局日志实例时注意并发安全
  • 错误日志应包含足够的上下文信息

API 文档

主要类型
// Logger 接口定义了所有日志操作
type Logger interface {
    SetLevel(level Level)
    GetLevel() Level
    Debug(args ...interface{})
    Info(args ...interface{})
    Warn(args ...interface{})
    Error(args ...interface{})
    Fatal(args ...interface{})
    WithField(key string, value interface{}) Logger
    WithFields(fields map[string]interface{}) Logger
}
关键函数
InitLogger

初始化全局日志实例。

func InitLogger(options ...Option) error

示例:

err := log.InitLogger(
    log.WithLogType(log.LogTypeLogrus),
    log.WithLevel(log.InfoLevel),
)
NewLogger

创建新的日志实例。

func NewLogger(options ...Option) (Logger, error)

示例:

logger, err := log.NewLogger(
    log.WithLogType(log.LogTypeStd),
    log.WithOutput("app.log"),
)
错误处理
  • 所有可能失败的操作都会返回 error
  • 日志初始化失败会返回具体的错误原因
  • Fatal 级别的日志会导致程序以状态码 1 退出

性能指标

操作 性能指标 说明
普通日志写入 O(1) 内存中的操作,性能开销很小
文件日志写入 O(1) 取决于系统 IO 性能
结构化字段 O(n) n 为字段数量

测试覆盖率

覆盖率
log >90%

调试指南

日志级别
  • Debug: 调试信息,用于开发和问题诊断
  • Info: 普通信息,记录正常的操作流程
  • Warn: 警告信息,表示可能的问题
  • Error: 错误信息,表示操作失败
  • Fatal: 致命错误,记录后程序会退出
常见问题排查
日志文件无法创建
  • 检查目录权限
  • 确保目录路径存在
  • 验证文件名格式是否正确
日志级别不正确
  • 检查 InitLogger 时的级别设置
  • 确认是否调用了 SetLevel 修改了级别
  • 验证日志调用使用了正确的方法

相关文档

贡献指南

我们欢迎任何形式的贡献,包括但不限于:

  • 报告问题
  • 提交功能建议
  • 提交代码改进
  • 完善文档

请参考我们的贡献指南了解详细信息。

许可证

本项目采用 MIT 许可证。查看 LICENSE 文件了解更多信息。

Documentation

Overview

Package log 提供统一的 Logger 接口、全局默认日志器访问,以及基于标准库和 Logrus 的实现。

Logger 统一封装 Debug、Info、Warn、Error、Fatal、级别控制和结构化字段追加。 InitLogger 配置包级默认日志器,Debug、Info、Warn、Error、Fatal 等全局函数都委托到该实例; 若调用方未显式初始化,首次调用 GetLogger 或全局函数时会惰性创建一个输出到标准输出的 Std logger。 NewLogger 用于创建独立日志器,可通过 Option 选择 Std、Console 或 Logrus 实现, 并配置级别、输出路径、输出格式和日志轮转。JSONFormat 与 TextFormat 仅影响 Logrus 格式化; 当前 Logger 接口不提供 Close 方法,调用方也无法显式关闭文件型实现。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Debug

func Debug(args ...interface{})

Debug 使用全局日志实例记录调试级别的日志。

参数:

  • args:要记录的内容,支持任意类型的值。

func Debugf

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

Debugf 使用全局日志实例记录格式化的调试级别日志。

参数:

  • format:格式化字符串。
  • args:格式化参数。

func Error

func Error(args ...interface{})

Error 使用全局日志实例记录错误级别的日志。

参数:

  • args:要记录的内容,支持任意类型的值。

func Errorf

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

Errorf 使用全局日志实例记录格式化的错误级别日志。

参数:

  • format:格式化字符串。
  • args:格式化参数。

func Fatal

func Fatal(args ...interface{})

Fatal 使用全局日志实例记录致命错误级别的日志。 记录日志后会导致程序退出。

参数:

  • args:要记录的内容,支持任意类型的值。

func Fatalf

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

Fatalf 使用全局日志实例记录格式化的致命错误级别日志。 记录日志后会导致程序退出。

参数:

  • format:格式化字符串。
  • args:格式化参数。

func Info

func Info(args ...interface{})

Info 使用全局日志实例记录信息级别的日志。

参数:

  • args:要记录的内容,支持任意类型的值。

func Infof

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

Infof 使用全局日志实例记录格式化的信息级别日志。

参数:

  • format:格式化字符串。
  • args:格式化参数。

func InitLogger

func InitLogger(options ...Option) error

InitLogger 初始化包级全局日志实例。

未传入 options 时使用 NewLogger 的默认配置。初始化成功后会替换当前全局 Logger; 初始化失败时保持既有全局 Logger 不变。

参数:

  • options:可选配置项,按传入顺序应用;未传入时使用默认配置。

返回:

  • error:NewLogger 返回错误时包装并返回;成功时返回 nil。

func SetLevel

func SetLevel(level Level)

SetLevel 设置全局日志级别。

参数:

  • level:日志过滤级别,可选值包括 DebugLevel、InfoLevel、WarnLevel、ErrorLevel 和 FatalLevel。

func SetLogger

func SetLogger(logger Logger)

SetLogger 设置包级全局日志实例。

参数:

  • logger:要设置为全局实例的日志记录器;传入 nil 会清空当前全局实例,并使下一次 GetLogger 重新创建默认实例。

func Warn

func Warn(args ...interface{})

Warn 使用全局日志实例记录警告级别的日志。

参数:

  • args:要记录的内容,支持任意类型的值。

func Warnf

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

Warnf 使用全局日志实例记录格式化的警告级别日志。

参数:

  • format:格式化字符串。
  • args:格式化参数。

Types

type Level

type Level int

Level 定义了日志的级别类型,用于控制日志的输出粒度。

const (
	// DebugLevel 表示调试级别,用于记录详细的调试信息。
	// 这个级别的日志通常只在开发环境启用。
	DebugLevel Level = iota

	// InfoLevel 表示信息级别,用于记录正常的操作信息。
	// 这个级别的日志用于跟踪应用的正常运行状态。
	InfoLevel

	// WarnLevel 表示警告级别,用于记录可能的问题或异常情况。
	// 这个级别的日志表示出现了值得注意的情况,但不影响系统的正常运行。
	WarnLevel

	// ErrorLevel 表示错误级别,用于记录错误信息。
	// 这个级别的日志表示出现了影响系统正常运行的错误。
	ErrorLevel

	// FatalLevel 表示致命错误级别,记录后会导致程序退出。
	// 这个级别的日志表示出现了无法恢复的严重错误。
	FatalLevel
)

func GetLevel

func GetLevel() Level

GetLevel 获取全局日志级别。

参数:无。

返回:

  • Level:当前全局 Logger 的日志过滤级别。

func ParseLevel

func ParseLevel(level string) (Level, error)

ParseLevel 从字符串解析日志级别。

参数:

  • level:日志级别字符串,支持 debug、info、warn、error 和 fatal。

返回:

  • Level:解析成功时返回对应日志级别;解析失败时返回 InfoLevel 作为回退值。
  • error:level 不属于支持值时返回错误,错误消息包含未知级别字符串。

func (Level) String

func (l Level) String() string

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

参数:无。

返回:

  • string:已定义级别返回 debug、info、warn、error 或 fatal;未知级别返回 unknown。

type LogType

type LogType string

LogType 定义 NewLogger 可选择的日志实现类型。

可选值包括:

  • LogTypeConsole:使用标准库日志并输出到标准输出。
  • LogTypeStd:使用标准库日志,可写入标准输出或指定文件。
  • LogTypeLogrus:使用 Logrus 日志实现,支持格式化和文件轮转配置。
const (
	// LogTypeConsole 表示控制台日志类型。
	// 这种类型的日志会直接输出到标准输出,适合开发调试使用。
	LogTypeConsole LogType = "console"

	// LogTypeStd 表示标准库日志类型。
	// 使用 Go 标准库的 log 包实现,提供基本的日志功能。
	LogTypeStd LogType = "std"

	// LogTypeLogrus 表示 Logrus 日志类型。
	// 使用 Logrus 库实现,提供丰富的日志功能,包括结构化日志、多种输出格式等。
	LogTypeLogrus LogType = "logrus"
)

type Logger

type Logger interface {
	// SetLevel 设置日志级别。
	// 只有大于或等于设置级别的日志才会被记录。
	//
	// 参数:
	//   - level:要设置的日志级别。
	SetLevel(level Level)

	// GetLevel 获取当前的日志级别。
	//
	// 返回:
	//   - Level:当前的日志级别。
	GetLevel() Level

	// Debug 记录调试级别的日志。
	// 参数 args 支持任意类型的值,这些值会被转换为字符串并连接。
	// 调试日志应该包含有助于诊断问题的详细信息。
	//
	// 参数:
	//   - args:要记录的日志内容,支持多个参数。
	Debug(args ...interface{})

	// Debugf 记录格式化的调试级别日志。
	// 参数 format 是格式化字符串,args 是对应的参数。
	// 支持标准的 Printf 风格的格式化。
	//
	// 参数:
	//   - format:格式化字符串。
	//   - args:格式化参数。
	Debugf(format string, args ...interface{})

	// Info 记录信息级别的日志。
	// 参数 args 支持任意类型的值,这些值会被转换为字符串并连接。
	// 信息日志应该记录系统的正常运行状态。
	//
	// 参数:
	//   - args:要记录的日志内容,支持多个参数。
	Info(args ...interface{})

	// Infof 记录格式化的信息级别日志。
	// 参数 format 是格式化字符串,args 是对应的参数。
	// 支持标准的 Printf 风格的格式化。
	//
	// 参数:
	//   - format:格式化字符串。
	//   - args:格式化参数。
	Infof(format string, args ...interface{})

	// Warn 记录警告级别的日志。
	// 参数 args 支持任意类型的值,这些值会被转换为字符串并连接。
	// 警告日志应该包含可能导致问题的情况。
	//
	// 参数:
	//   - args:要记录的日志内容,支持多个参数。
	Warn(args ...interface{})

	// Warnf 记录格式化的警告级别日志。
	// 参数 format 是格式化字符串,args 是对应的参数。
	// 支持标准的 Printf 风格的格式化。
	//
	// 参数:
	//   - format:格式化字符串。
	//   - args:格式化参数。
	Warnf(format string, args ...interface{})

	// Error 记录错误级别的日志。
	// 参数 args 支持任意类型的值,这些值会被转换为字符串并连接。
	// 错误日志应该包含错误的详细信息和上下文。
	//
	// 参数:
	//   - args:要记录的日志内容,支持多个参数。
	Error(args ...interface{})

	// Errorf 记录格式化的错误级别日志。
	// 参数 format 是格式化字符串,args 是对应的参数。
	// 支持标准的 Printf 风格的格式化。
	//
	// 参数:
	//   - format:格式化字符串。
	//   - args:格式化参数。
	Errorf(format string, args ...interface{})

	// Fatal 记录致命错误级别的日志。
	// 参数 args 支持任意类型的值,这些值会被转换为字符串并连接。
	// 记录日志后会导致程序以状态码 1 退出。
	// 这个方法应该只在程序无法继续运行时使用。
	//
	// 参数:
	//   - args:要记录的日志内容,支持多个参数。
	Fatal(args ...interface{})

	// Fatalf 记录格式化的致命错误级别日志。
	// 参数 format 是格式化字符串,args 是对应的参数。
	// 支持标准的 Printf 风格的格式化。
	// 记录日志后会导致程序以状态码 1 退出。
	//
	// 参数:
	//   - format:格式化字符串。
	//   - args:格式化参数。
	Fatalf(format string, args ...interface{})

	// WithField 添加一个字段到日志上下文。
	// 参数 key 是字段名,value 是字段值。
	// 返回一个新的 Logger 实例,原实例不会被修改。
	// 这个方法用于添加结构化的上下文信息到日志中。
	//
	// 参数:
	//   - key:字段名。
	//   - value:字段值。
	//
	// 返回:
	//   - Logger:新的日志实例。
	WithField(key string, value interface{}) Logger

	// WithFields 添加多个字段到日志上下文。
	// 参数 fields 是要添加的字段映射。
	// 返回一个新的 Logger 实例,原实例不会被修改。
	// 这个方法用于一次性添加多个结构化字段。
	//
	// 参数:
	//   - fields:字段映射。
	//
	// 返回:
	//   - Logger:新的日志实例。
	WithFields(fields map[string]interface{}) Logger
}

Logger 定义了统一的日志接口。 该接口提供了以下功能:

  • 支持多个日志级别(Debug、Info、Warn、Error、Fatal)。
  • 提供格式化和非格式化的日志记录方法。
  • 支持结构化日志记录。
  • 支持日志级别的动态调整。
  • 提供上下文信息的添加和管理。

func GetLogger

func GetLogger() Logger

GetLogger 获取包级全局日志实例。

如果尚未设置全局 Logger,GetLogger 会惰性创建默认日志实例并缓存;默认实例写入标准输出。 默认日志实例创建失败时会 panic。

参数:无。

返回:

  • Logger:当前全局日志实例。

func NewLogger added in v0.0.2

func NewLogger(options ...Option) (Logger, error)

NewLogger 创建一个新的日志实例。

未传入 options 时使用标准库日志实现、InfoLevel、标准输出、JSONFormat 以及 Logrus 轮转默认值。LogTypeConsole 会忽略 Output 并写入标准输出。

参数:

  • options:可选配置项,按传入顺序应用;未传入时使用默认配置。

返回:

  • Logger:初始化完成的日志实例。
  • error:日志类型不受支持、文件输出路径创建失败、文件打开失败或 Logrus 轮转 writer 创建失败时返回错误。

func NewLogrusLogger

func NewLogrusLogger(opts ...LogrusOption) (Logger, error)

NewLogrusLogger 创建一个新的 LogrusLogger 实例。

参数:

  • opts:可选的配置选项列表,用于自定义日志记录器的行为。

返回:

  • Logger:返回创建的日志实例。
  • error:返回创建过程中可能发生的错误。

func NewStdLogger

func NewStdLogger(output string) (Logger, error)

NewStdLogger 创建一个新的 StdLogger 实例。

参数:

  • output:日志文件的路径,如果为空则输出到标准输出。

返回值:

  • Logger:返回创建的日志实例。
  • error:返回创建过程中可能发生的错误。

func WithField

func WithField(key string, value interface{}) Logger

WithField 使用全局日志实例添加一个结构化字段。

参数:

  • key:字段名。
  • value:字段值。

返回:

  • Logger:返回一个新的 Logger 实例,包含添加的字段。

func WithFields

func WithFields(fields map[string]interface{}) Logger

WithFields 使用全局日志实例添加多个结构化字段。

参数:

  • fields:要添加的字段映射。

返回:

  • Logger:返回一个新的 Logger 实例,包含添加的字段。

type LoggerFormatType added in v0.0.4

type LoggerFormatType string

LoggerFormatType 定义 Logrus 日志输出格式。

可选值包括:

  • TextFormat:使用 logrus.TextFormatter 输出文本日志。
  • JSONFormat:使用 logrus.JSONFormatter 输出 JSON 日志。
const (
	// TextFormat 表示文本格式的日志输出。
	TextFormat LoggerFormatType = "text"
	// JSONFormat 表示 JSON 格式的日志输出。
	JSONFormat LoggerFormatType = "json"
)

type LoggerOptions added in v0.0.2

type LoggerOptions struct {
	// Type 指定日志实现类型。可选值包括:
	//   - LogTypeConsole:使用标准库日志并输出到标准输出。
	//   - LogTypeStd:使用标准库日志,可写入标准输出或指定文件。
	//   - LogTypeLogrus:使用 Logrus 日志实现,支持格式化和文件轮转配置。
	Type LogType
	// Level 指定日志过滤级别。可选值包括:
	//   - DebugLevel:输出调试及以上级别日志。
	//   - InfoLevel:输出信息及以上级别日志。
	//   - WarnLevel:输出警告及以上级别日志。
	//   - ErrorLevel:输出错误及以上级别日志。
	//   - FatalLevel:输出致命错误日志。
	Level Level
	// Output 指定日志文件路径。空字符串表示写入标准输出。
	Output string
	// EnableRotate 控制 Logrus 文件输出是否启用日志轮转。
	EnableRotate bool
	// RotateTime 指定 Logrus 日志轮转周期。零值会传递给底层轮转实现。
	RotateTime time.Duration
	// MaxAge 指定 Logrus 轮转日志的最大保留时间。零值表示由底层实现处理。
	MaxAge time.Duration
	// FormatType 指定 Logrus 输出格式。
	//
	// 可选值包括:
	//   - TextFormat:使用文本格式输出。
	//   - JSONFormat:使用 JSON 格式输出。
	FormatType LoggerFormatType
}

LoggerOptions 定义 NewLogger 使用的日志配置。

零值会在 NewLogger 中与默认配置合并使用。Output 为空时输出到标准输出; EnableRotate、RotateTime、MaxAge 和 FormatType 主要影响 Logrus 实现。

type LogrusLogger

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

LogrusLogger 实现了 Logger 接口,使用 Logrus 作为底层日志库。 这个实现提供了丰富的日志功能,包括:

  • 结构化日志记录。
  • 多种输出格式(文本、JSON)。
  • 灵活的日志级别控制。
  • 支持同时输出到多个目标。

func (*LogrusLogger) Debug

func (l *LogrusLogger) Debug(args ...interface{})

Debug 实现 Logger 接口的调试级别日志记录。

参数:

  • args:要记录的内容,支持任意类型的值。

func (*LogrusLogger) Debugf

func (l *LogrusLogger) Debugf(format string, args ...interface{})

Debugf 实现 Logger 接口的格式化调试级别日志记录。

参数:

  • format:格式化字符串。
  • args:格式化参数。

func (*LogrusLogger) Error

func (l *LogrusLogger) Error(args ...interface{})

Error 实现 Logger 接口的错误级别日志记录。

参数:

  • args:要记录的内容,支持任意类型的值。

func (*LogrusLogger) Errorf

func (l *LogrusLogger) Errorf(format string, args ...interface{})

Errorf 实现 Logger 接口的格式化错误级别日志记录。

参数:

  • format:格式化字符串。
  • args:格式化参数。

func (*LogrusLogger) Fatal

func (l *LogrusLogger) Fatal(args ...interface{})

Fatal 实现 Logger 接口的致命错误级别日志记录。 记录日志后会导致程序以状态码 1 退出。

参数:

  • args:要记录的内容,支持任意类型的值。

func (*LogrusLogger) Fatalf

func (l *LogrusLogger) Fatalf(format string, args ...interface{})

Fatalf 实现 Logger 接口的格式化致命错误级别日志记录。 记录日志后会导致程序以状态码 1 退出。

参数:

  • format:格式化字符串。
  • args:格式化参数。

func (*LogrusLogger) GetLevel

func (l *LogrusLogger) GetLevel() Level

GetLevel 实现 Logger 接口的日志级别获取方法。

返回:

  • Level:返回当前日志记录器的日志级别。

func (*LogrusLogger) Info

func (l *LogrusLogger) Info(args ...interface{})

Info 实现 Logger 接口的信息级别日志记录。

参数:

  • args:要记录的内容,支持任意类型的值。

func (*LogrusLogger) Infof

func (l *LogrusLogger) Infof(format string, args ...interface{})

Infof 实现 Logger 接口的格式化信息级别日志记录。

参数:

  • format:格式化字符串。
  • args:格式化参数。

func (*LogrusLogger) SetLevel

func (l *LogrusLogger) SetLevel(level Level)

SetLevel 实现 Logger 接口的日志级别设置方法。

参数:

  • level:日志过滤级别;未知级别会被忽略并保持当前 Logrus 级别不变。

func (*LogrusLogger) Warn

func (l *LogrusLogger) Warn(args ...interface{})

Warn 实现 Logger 接口的警告级别日志记录。

参数:

  • args:要记录的内容,支持任意类型的值。

func (*LogrusLogger) Warnf

func (l *LogrusLogger) Warnf(format string, args ...interface{})

Warnf 实现 Logger 接口的格式化警告级别日志记录。

参数:

  • format:格式化字符串。
  • args:格式化参数。

func (*LogrusLogger) WithField

func (l *LogrusLogger) WithField(key string, value interface{}) Logger

WithField 实现 Logger 接口的单字段添加方法。

参数:

  • key:字段名。
  • value:字段值。

返回:

  • Logger:返回一个包含新字段的新 Logger 实例。

func (*LogrusLogger) WithFields

func (l *LogrusLogger) WithFields(fields map[string]interface{}) Logger

WithFields 实现 Logger 接口的多字段添加方法。

参数:

  • fields:要添加的字段映射。

返回:

  • Logger:返回一个包含新字段的新 Logger 实例。

type LogrusLoggerOptions added in v0.0.2

type LogrusLoggerOptions struct {
	// OutputPath 指定日志文件路径。空字符串表示保留 Logrus 默认 stderr 输出。
	OutputPath string
	// Formatter 指定 Logrus 日志格式化器。nil 会传递给 Logrus 并由调用方承担后续使用风险。
	Formatter logrus.Formatter
	// Level 指定 Logrus 日志过滤级别。
	Level logrus.Level
	// FileMode 指定禁用轮转时创建日志文件使用的权限模式。
	FileMode os.FileMode
	// DirMode 指定创建日志目录使用的权限模式。
	DirMode os.FileMode
	// EnableRotate 控制文件输出是否使用 rotatelogs 轮转 writer。
	EnableRotate bool
	// RotateTime 指定启用轮转时的日志轮转周期。
	RotateTime time.Duration
	// MaxAge 指定启用轮转时旧日志文件的最大保留时间。
	MaxAge time.Duration
}

LogrusLoggerOptions 包含了 LogrusLogger 的所有配置选项。

type LogrusOption added in v0.0.2

type LogrusOption func(*LogrusLoggerOptions)

LogrusOption 定义了 LogrusLogger 的配置选项函数类型。

func WithDirMode added in v0.0.2

func WithDirMode(mode os.FileMode) LogrusOption

WithDirMode 设置日志目录权限。

参数:

  • mode:日志目录的权限模式,使用八进制表示,例如:0755。

返回:

  • LogrusOption:返回一个配置选项函数。

func WithFileMode added in v0.0.2

func WithFileMode(mode os.FileMode) LogrusOption

WithFileMode 设置日志文件权限。

参数:

  • mode:日志文件的权限模式,使用八进制表示,例如:0666。

返回:

  • LogrusOption:返回一个配置选项函数。

func WithFormatter added in v0.0.2

func WithFormatter(formatter logrus.Formatter) LogrusOption

WithFormatter 设置日志格式化器。

参数:

  • formatter:自定义的日志格式化器实例,用于控制日志的输出格式。

返回:

  • LogrusOption:返回一个配置选项函数。

func WithJSONFormatter added in v0.0.4

func WithJSONFormatter(timestampFormat string, prettyPrint bool) LogrusOption

WithJSONFormatter 设置 JSON 格式化器的选项。

参数:

  • timestampFormat:时间戳的格式化模板,例如:"2006-01-02 15:04:05"。
  • prettyPrint:是否美化 JSON 输出格式,true 表示美化,false 表示单行输出。

返回:

  • LogrusOption:返回一个配置选项函数。

func WithLogrusEnableRotate added in v0.0.2

func WithLogrusEnableRotate(enable bool) LogrusOption

WithLogrusEnableRotate 设置是否启用日志滚动。

参数:

  • enable:是否启用日志滚动功能,true 表示启用,false 表示禁用。

返回:

  • LogrusOption:返回一个配置选项函数。

func WithLogrusLevel added in v0.0.2

func WithLogrusLevel(level Level) LogrusOption

WithLogrusLevel 设置 Logrus 日志过滤级别。

参数:

  • level:日志过滤级别,可选值包括 DebugLevel、InfoLevel、WarnLevel、ErrorLevel 和 FatalLevel。

返回:

  • LogrusOption:应用于 LogrusLoggerOptions 的配置选项;未知级别会保持当前 Logrus 级别不变。

func WithLogrusMaxAge added in v0.0.2

func WithLogrusMaxAge(duration time.Duration) LogrusOption

WithLogrusMaxAge 设置日志保留时间。

参数:

  • duration:日志文件的最大保留时间,超过这个时间的日志文件会被自动删除。

返回:

  • LogrusOption:返回一个配置选项函数。

func WithLogrusRotateTime added in v0.0.2

func WithLogrusRotateTime(duration time.Duration) LogrusOption

WithLogrusRotateTime 设置日志滚动时间间隔。

参数:

  • duration:日志滚动的时间间隔,例如:time.Hour 表示每小时滚动一次。

返回:

  • LogrusOption:返回一个配置选项函数。

func WithOutputPath added in v0.0.2

func WithOutputPath(path string) LogrusOption

WithOutputPath 设置日志输出路径。

参数:

  • path:日志文件路径,支持绝对路径和相对路径;空字符串表示保留 Logrus 默认 stderr 输出。

返回:

  • LogrusOption:应用于 LogrusLoggerOptions 的配置选项。

func WithTextFormatter added in v0.0.4

func WithTextFormatter(timestampFormat string, fullTimestamp bool, disableColors bool) LogrusOption

WithTextFormatter 设置文本格式化器的选项。

参数:

  • timestampFormat:时间戳的格式化模板,例如:"2006-01-02 15:04:05"。
  • fullTimestamp:是否显示完整时间戳,true 表示显示完整时间戳,false 表示显示相对时间。
  • disableColors:是否禁用控制台颜色输出,true 表示禁用颜色,false 表示启用颜色。

返回:

  • LogrusOption:返回一个配置选项函数。

type Option added in v0.0.2

type Option func(*LoggerOptions)

Option 定义日志配置修改函数。

参数:

  • *LoggerOptions:待修改的日志配置,调用方应保证其非 nil。

func WithEnableRotate added in v0.0.2

func WithEnableRotate(enable bool) Option

WithEnableRotate 设置 Logrus 文件输出是否启用日志轮转。

参数:

  • enable:是否启用日志轮转;true 表示启用,false 表示禁用。

返回:

  • Option:应用于 LoggerOptions 的配置选项。

func WithFormatType added in v0.0.4

func WithFormatType(formatType LoggerFormatType) Option

WithFormatType 设置 Logrus 日志输出格式类型。

参数:

  • formatType:日志输出格式类型,可选值包括:
  • TextFormat:使用文本格式输出日志。
  • JSONFormat:使用 JSON 格式输出日志。

返回:

  • Option:应用于 LoggerOptions 的配置选项。

func WithLevel added in v0.0.2

func WithLevel(level Level) Option

WithLevel 设置日志过滤级别。

参数:

  • level:日志过滤级别,可选值包括:
  • DebugLevel:输出调试及以上级别日志。
  • InfoLevel:输出信息及以上级别日志。
  • WarnLevel:输出警告及以上级别日志。
  • ErrorLevel:输出错误及以上级别日志。
  • FatalLevel:输出致命错误日志。

返回:

  • Option:应用于 LoggerOptions 的配置选项。

func WithLogType added in v0.0.2

func WithLogType(logType LogType) Option

WithLogType 设置 NewLogger 使用的日志实现类型。

参数:

  • logType:日志实现类型,可选值包括:
  • LogTypeConsole:使用标准库日志并强制输出到标准输出。
  • LogTypeStd:使用标准库日志,可按 Output 写入文件或标准输出。
  • LogTypeLogrus:使用 Logrus 日志实现,支持格式化和文件轮转配置。

返回:

  • Option:应用于 LoggerOptions 的配置选项。

func WithMaxAge added in v0.0.2

func WithMaxAge(duration time.Duration) Option

WithMaxAge 设置 Logrus 轮转日志文件的最大保留时间。

参数:

  • duration:轮转日志文件的最大保留时间,传递给底层 rotatelogs 实现。

返回:

  • Option:应用于 LoggerOptions 的配置选项。

func WithOutput added in v0.0.2

func WithOutput(output string) Option

WithOutput 设置日志输出路径。

参数:

  • output:日志文件路径;空字符串表示输出到标准输出。

返回:

  • Option:应用于 LoggerOptions 的配置选项。

func WithRotateTime added in v0.0.2

func WithRotateTime(duration time.Duration) Option

WithRotateTime 设置 Logrus 文件输出的日志轮转周期。

参数:

  • duration:日志轮转周期,传递给底层 rotatelogs 实现。

返回:

  • Option:应用于 LoggerOptions 的配置选项。

type StdLogger

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

StdLogger 实现了 Logger 接口,使用 Go 标准库的 log 包作为底层实现。 这个实现提供了基本的日志功能: - 支持不同的日志级别。 - 支持结构化字段。 - 支持文件输出。 - 支持格式化日志。

func (*StdLogger) Debug

func (l *StdLogger) Debug(args ...interface{})

Debug 实现 Logger 接口的调试级别日志记录。

参数:

  • args:要记录的内容,支持任意类型的值。

func (*StdLogger) Debugf

func (l *StdLogger) Debugf(format string, args ...interface{})

Debugf 实现 Logger 接口的格式化调试级别日志记录。

参数:

  • format:格式化字符串。
  • args:格式化参数。

func (*StdLogger) Error

func (l *StdLogger) Error(args ...interface{})

Error 实现 Logger 接口的错误级别日志记录。

参数:

  • args:要记录的内容,支持任意类型的值。

func (*StdLogger) Errorf

func (l *StdLogger) Errorf(format string, args ...interface{})

Errorf 实现 Logger 接口的格式化错误级别日志记录。

参数:

  • format:格式化字符串。
  • args:格式化参数。

func (*StdLogger) Fatal

func (l *StdLogger) Fatal(args ...interface{})

Fatal 实现 Logger 接口的致命错误级别日志记录。 记录日志后会导致程序以状态码 1 退出。

参数:

  • args:要记录的内容,支持任意类型的值。

func (*StdLogger) Fatalf

func (l *StdLogger) Fatalf(format string, args ...interface{})

Fatalf 实现 Logger 接口的格式化致命错误级别日志记录。 记录日志后会导致程序以状态码 1 退出。

参数:

  • format:格式化字符串。
  • args:格式化参数。

func (*StdLogger) GetLevel

func (l *StdLogger) GetLevel() Level

GetLevel 实现 Logger 接口的日志级别获取方法。

返回值:

  • Level:返回当前日志记录器的日志级别。

func (*StdLogger) Info

func (l *StdLogger) Info(args ...interface{})

Info 实现 Logger 接口的信息级别日志记录。

参数:

  • args:要记录的内容,支持任意类型的值。

func (*StdLogger) Infof

func (l *StdLogger) Infof(format string, args ...interface{})

Infof 实现 Logger 接口的格式化信息级别日志记录。

参数:

  • format:格式化字符串。
  • args:格式化参数。

func (*StdLogger) SetLevel

func (l *StdLogger) SetLevel(level Level)

SetLevel 实现 Logger 接口的日志级别设置方法。

参数:

  • level:要设置的日志级别。

func (*StdLogger) Warn

func (l *StdLogger) Warn(args ...interface{})

Warn 实现 Logger 接口的警告级别日志记录。

参数:

  • args:要记录的内容,支持任意类型的值。

func (*StdLogger) Warnf

func (l *StdLogger) Warnf(format string, args ...interface{})

Warnf 实现 Logger 接口的格式化警告级别日志记录。

参数:

  • format:格式化字符串。
  • args:格式化参数。

func (*StdLogger) WithField

func (l *StdLogger) WithField(key string, value interface{}) Logger

WithField 实现 Logger 接口的单字段添加方法。

参数:

  • key:字段名。
  • value:字段值。

返回值:

  • Logger:返回一个包含新字段的新 Logger 实例。

func (*StdLogger) WithFields

func (l *StdLogger) WithFields(fields map[string]interface{}) Logger

WithFields 实现 Logger 接口的多字段添加方法。

参数:

  • fields:要添加的字段映射。

返回值:

  • Logger:返回一个包含所有字段的新 Logger 实例。

Jump to

Keyboard shortcuts

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