logger

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Jun 23, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultLogger = NewLogManager()

DefaultLogger 默认日志管理器,包级 facade 代理到它。

View Source
var Field = struct {
	String   func(key string, value string) zap.Field
	Int      func(key string, value int) zap.Field
	Int64    func(key string, value int64) zap.Field
	Bool     func(key string, value bool) zap.Field
	Uint     func(key string, value uint) zap.Field
	Float64  func(key string, value float64) zap.Field
	Duration func(key string, value interface{}) zap.Field
	Error    func(err error) zap.Field
}{
	String:  zap.String,
	Int:     zap.Int,
	Int64:   zap.Int64,
	Bool:    zap.Bool,
	Uint:    zap.Uint,
	Float64: zap.Float64,
	Duration: func(key string, value interface{}) zap.Field {
		switch v := value.(type) {
		case zap.Field:
			return v
		default:
			return zap.Any(key, value)
		}
	},
	Error: func(err error) zap.Field {
		return zap.Error(err)
	},
}

Field Zap 字段别名,用于简化日志字段定义

View Source
var (
	// Logger 全局通用日志实例。Init 之前为 Nop,调用安全。
	Logger = zap.NewNop()
)

Functions

func APILog

func APILog() *zap.Logger

APILog 返回 API 专用日志器(写 logs/api.log + console)

func Close

func Close() error

Close 包级 facade:关闭日志文件句柄,重置为 Nop(代理到 DefaultLogger)。

func DBLog

func DBLog() *zap.Logger

DBLog 返回数据库专用日志器(写 logs/database.log + console)

func Debug

func Debug(msg string, fields ...zap.Field)

Debug 调试日志

func Debugf

func Debugf(template string, args ...any)

Debugf 格式化调试日志

func Error

func Error(msg string, fields ...zap.Field)

Error 错误日志

func Errorf

func Errorf(template string, args ...any)

Errorf 格式化错误日志

func Fatal

func Fatal(msg string, fields ...zap.Field)

Fatal 致命错误日志(仅供应用层使用,框架内部禁止调用)

func Fatalf

func Fatalf(template string, args ...any)

Fatalf 格式化致命错误日志(仅供应用层使用,框架内部禁止调用)

func Info

func Info(msg string, fields ...zap.Field)

Info 信息日志

func Infof

func Infof(template string, args ...any)

Infof 格式化信息日志

func Init

func Init(cfg *config.Config) error

Init 包级 facade:初始化日志(代理到 DefaultLogger)。

func SetDefaultLogManager added in v1.1.0

func SetDefaultLogManager(m *LogManager)

SetDefaultLogManager 提升指定 LogManager 为全局默认。

func Sync

func Sync() error

Sync 包级 facade:同步全部 logger 缓冲(代理到 DefaultLogger)。

func Warn

func Warn(msg string, fields ...zap.Field)

Warn 警告日志

func Warnf

func Warnf(template string, args ...any)

Warnf 格式化警告日志

Types

type LogManager added in v1.1.0

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

LogManager 日志管理器(#10)。照 database.Manager 模式: 实例化 + DefaultLogger 全局默认 + 包级 facade 代理。 包级 Logger/sugar/apiLog/dbLog 由 Init 同步维护,下游 8 个包零改动。

func NewLogManager added in v1.1.0

func NewLogManager() *LogManager

NewLogManager 创建日志管理器实例。

func (*LogManager) Close added in v1.1.0

func (m *LogManager) Close() error

Close 关闭日志文件句柄,重置全局 logger 为 Nop。 通常由 App.Shutdown 在 Sync 之后调用;测试场景需要清理临时目录时也应调用。

调用后再次写日志不会 panic(fall back to nop logger),但不会写入文件。 如需重新启用,请再次调用 Init。

func (*LogManager) Init added in v1.1.0

func (m *LogManager) Init(cfg *config.Config) error

Init 初始化日志。

三个 logger 的分流策略:

  • Logger(通用):写 console + logs/app.log
  • APILog() :写 console + logs/api.log
  • DBLog() :写 console + logs/database.log

关键修复(v1.0.3):旧实现把 apiCore 和 dbCore 都 Tee 进通用 Logger, 导致每条 logger.Info(...) 都会同时落到 api.log + database.log + console 三份,磁盘占用翻倍且分流形同虚设。新实现通用 Logger 只走独立的 app.log。

func (*LogManager) Sync added in v1.1.0

func (m *LogManager) Sync() error

Sync 同步全部 logger 缓冲到底层 writer。

注意:在 Windows / 部分 *nix 平台上对 stdout/stderr 调用 Sync 会返回 "invalid argument" / "inappropriate ioctl for device",属于 zap 已知行为, 这里把这类错误识别并忽略,只返回真实的写入失败。

Jump to

Keyboard shortcuts

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