Documentation
¶
Index ¶
- func AsKratosLogger(l Logger) log.Logger
- func NewKratosLogger(cfg *conf.Logger) (log.Logger, error)
- func NewKratosStdLogger() log.Logger
- func Register(typ Type, f FactoryFunc) error
- func SetLogger(l Logger)
- func Unregister(typ Type) bool
- type FactoryFunc
- type Helper
- type Level
- type Logger
- func FromKratosLogger(l log.Logger) Logger
- func GetLogger() Logger
- func NewLogger(cfg *conf.Logger) (Logger, error)
- func NewLoggerProvider(cfg *conf.Logger, appInfo *conf.AppInfo) Logger
- func NewSlogLogger(l *slog.Logger) Logger
- func NewStdLogger() Logger
- func NopLogger() Logger
- func WrapTrace(l Logger) Logger
- type Type
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AsKratosLogger ¶ added in v0.1.3
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
NewKratosLogger 动态创建日志实例,返回 Kratos log.Logger。 旧 API 兼容入口,内部通过 AsKratosLogger 适配项目 Logger。 新代码请使用 NewLogger。
func NewKratosStdLogger ¶ added in v0.1.3
NewKratosStdLogger 创建一个 Kratos 内置的控制台日志记录器。 旧 API 兼容入口,新代码请使用 NewStdLogger(slog 后端,无 Kratos 依赖)。
func SetLogger ¶ added in v0.1.3
func SetLogger(l Logger)
SetLogger 设置包级全局 Logger。传 nil 恢复为静默 nopLogger。 并发安全。
func Unregister ¶ added in v0.1.0
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
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。
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
FromKratosLogger 包装 Kratos log.Logger 为项目 Logger。
使用方式:
// 现有的 Kratos zap logger kratosL, _ := zap.NewLogger(cfg) // 包装为项目 Logger myLogger := logger.FromKratosLogger(kratosL)
func NewLogger ¶
NewLogger 动态创建日志实例,返回项目 Logger 接口。
内部通过工厂注册表查找后端(zap/logrus/fluent 等)。 工厂现在直接返回项目 Logger 接口,无需 Kratos 适配。
func NewLoggerProvider ¶
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
NewSlogLogger 使用指定的 *slog.Logger 创建 Logger。
func NewStdLogger ¶
func NewStdLogger() Logger
NewStdLogger 创建一个基于 slog 的 Logger,输出到 stderr,级别为 Info。
这是项目 Logger 接口的原生实现,不依赖 Kratos。 调用方需要不同格式/级别/输出位置时,可以:
- 构建自己的 *slog.Logger 并直接赋值给 stdLogger{L: myLogger}
- 或自行实现 Logger 接口