Help us shape the future of Go! Take the 2026 Go Developer Survey

logger

package module
v0.1.3 Latest Latest
Warning

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

Go to latest
Published: Aug 23, 2026 License: MIT Imports: 10 Imported by: 6

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AsKratosLogger added in v0.1.3

func AsKratosLogger(l Logger) log.Logger

AsKratosLogger 将项目 Logger 适配为 Kratos log.Logger。

用于兼容仍需要 log.Logger 的场景,例如:

kratosApp := kratos.New(kratos.Logger(logger.AsKratosLogger(myLogger)))
helper := log.NewHelper(logger.AsKratosLogger(myLogger))

如果传入的 Logger 已经是包装的 Kratos logger(通过 FromKratosLogger 创建), 会直接解包返回底层的 log.Logger,避免双重包装。

func NewKratosLogger added in v0.1.3

func NewKratosLogger(cfg *conf.Logger) (log.Logger, error)

NewKratosLogger 动态创建日志实例,返回 Kratos log.Logger。 旧 API 兼容入口,内部通过 AsKratosLogger 适配项目 Logger。 新代码请使用 NewLogger。

func NewKratosStdLogger added in v0.1.3

func NewKratosStdLogger() log.Logger

NewKratosStdLogger 创建一个 Kratos 内置的控制台日志记录器。 旧 API 兼容入口,新代码请使用 NewStdLogger(slog 后端,无 Kratos 依赖)。

func Register added in v0.1.0

func Register(typ Type, f FactoryFunc) error

Register 注册远程配置客户端构造函数

func SetLogger added in v0.1.3

func SetLogger(l Logger)

SetLogger 设置包级全局 Logger。传 nil 恢复为静默 nopLogger。 并发安全。

func Unregister added in v0.1.0

func Unregister(typ Type) bool

Unregister removes a registered factory by Type. It returns true if a factory was removed. Use with caution in concurrent environments (primarily intended for tests).

Types

type FactoryFunc added in v0.1.0

type FactoryFunc func(cfg *conf.Logger) (Logger, error)

func GetFactory added in v0.1.0

func GetFactory(typ Type) (FactoryFunc, bool)

GetFactory returns a registered FactoryFunc for a given Type and whether it existed. Safe for concurrent use.

type Helper added in v0.1.3

type Helper struct {
	Logger
}

Helper 提供格式化和简化调用方法。 等价于 Kratos log.Helper,但不依赖 Kratos。

func NewHelper added in v0.1.3

func NewHelper(l Logger) *Helper

NewHelper 创建日志助手。

func (*Helper) Debugf added in v0.1.3

func (h *Helper) Debugf(ctx context.Context, format string, args ...any)

Debugf 格式化输出 DEBUG 日志。

func (*Helper) Errorf added in v0.1.3

func (h *Helper) Errorf(ctx context.Context, format string, args ...any)

Errorf 格式化输出 ERROR 日志。

func (*Helper) Infof added in v0.1.3

func (h *Helper) Infof(ctx context.Context, format string, args ...any)

Infof 格式化输出 INFO 日志。

func (*Helper) Warnf added in v0.1.3

func (h *Helper) Warnf(ctx context.Context, format string, args ...any)

Warnf 格式化输出 WARN 日志。

type Level added in v0.1.3

type Level int32

Level 日志级别。

与 Kratos log.Level 数值兼容,方便适配器零成本转换。

const (
	LevelDebug Level = iota
	LevelInfo
	LevelWarn
	LevelError
	LevelFatal
)

func (Level) String added in v0.1.3

func (l Level) String() string

String 返回日志级别的可读字符串。

type Logger added in v0.1.3

type Logger interface {
	// Debug 输出 DEBUG 级别日志。
	// ctx 用于提取 trace_id / span_id 等请求级属性,可为 nil。
	// keyvals 为交替的 key-value 对,例如 ("user", 42, "action", "login")。
	Debug(ctx context.Context, msg string, keyvals ...any)

	// Info 输出 INFO 级别日志。
	Info(ctx context.Context, msg string, keyvals ...any)

	// Warn 输出 WARN 级别日志。
	Warn(ctx context.Context, msg string, keyvals ...any)

	// Error 输出 ERROR 级别日志。
	Error(ctx context.Context, msg string, keyvals ...any)

	// With 返回附加了固定 key-value 对的新 Logger 实例。
	// 常用于区分模块:logger.With("module", "bootstrap")。
	With(keyvals ...any) Logger
}

Logger 项目统一日志接口。

设计目标:

  • context 首参:支持 tracing / request-scoped 属性,取代 Kratos Valuer 机制
  • 每级独立方法:API 清晰,编译期类型安全,IDE 友好
  • msg 独立参数:不埋在 keyvals 中,调用更直观
  • keyvals 结构化:交替 key-value 对,兼容 Kratos / slog 生态
  • With() 返回新实例:可附加固定字段(如 module / service.*)

func FromKratosLogger added in v0.1.3

func FromKratosLogger(l log.Logger) Logger

FromKratosLogger 包装 Kratos log.Logger 为项目 Logger。

使用方式:

// 现有的 Kratos zap logger
kratosL, _ := zap.NewLogger(cfg)
// 包装为项目 Logger
myLogger := logger.FromKratosLogger(kratosL)

func GetLogger added in v0.1.3

func GetLogger() Logger

GetLogger 返回当前包级 Logger。

func NewLogger

func NewLogger(cfg *conf.Logger) (Logger, error)

NewLogger 动态创建日志实例,返回项目 Logger 接口。

内部通过工厂注册表查找后端(zap/logrus/fluent 等)。 工厂现在直接返回项目 Logger 接口,无需 Kratos 适配。

func NewLoggerProvider

func NewLoggerProvider(cfg *conf.Logger, appInfo *conf.AppInfo) Logger

NewLoggerProvider 创建一个新的日志记录器提供者,返回项目 Logger 接口。 它会从 cfg 创建具体 logger(通过 NewLogger),并为 logger 附加一组标准字段 (service.*, ts, caller, trace_id, span_id)。 实现是防御性的:当 cfg 或 appInfo 为空或 NewLogger 返回 nil/err 时, 会回退到标准控制台 logger。

func NewSlogLogger added in v0.1.3

func NewSlogLogger(l *slog.Logger) Logger

NewSlogLogger 使用指定的 *slog.Logger 创建 Logger。

func NewStdLogger

func NewStdLogger() Logger

NewStdLogger 创建一个基于 slog 的 Logger,输出到 stderr,级别为 Info。

这是项目 Logger 接口的原生实现,不依赖 Kratos。 调用方需要不同格式/级别/输出位置时,可以:

  • 构建自己的 *slog.Logger 并直接赋值给 stdLogger{L: myLogger}
  • 或自行实现 Logger 接口

func NopLogger added in v0.1.3

func NopLogger() Logger

NopLogger 返回一个丢弃所有日志的 Logger 实例。

func WrapTrace added in v0.1.3

func WrapTrace(l Logger) Logger

WrapTrace 用 trace_id/span_id 自动注入包装一个 Logger。 重复包装是安全的(会检测并跳过)。

type Type

type Type string

Type 日志类型枚举

const (
	Std     Type = "std"
	Fluent  Type = "fluent"
	Logrus  Type = "logrus"
	Zap     Type = "zap"
	Aliyun  Type = "aliyun"
	Tencent Type = "tencent"
	Zerolog Type = "zerolog"
)

func ListFactories added in v0.1.0

func ListFactories() []Type

ListFactories returns a slice of currently registered Types.

Directories

Path Synopsis
aliyun module
fluent module
logrus module
tencent module
zap module

Jump to

Keyboard shortcuts

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