logger

package
v1.4.0 Latest Latest
Warning

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

Go to latest
Published: Jul 13, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultLogger = NewLogManager()

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

Deprecated: 直接替换该导出变量(logger.DefaultLogger = m)不会更新包级 facade 使用的 atomic 快照,也不是并发安全的替换方式。请用 SetDefaultLogManager(m)。 直接调用 DefaultLogger.Init/Close/SetLevel/GetLevel 仍保留兼容,并受 LogManager 自身锁保护。

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 time.Duration) 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: zap.Duration,
	Error: func(err error) zap.Field {
		return zap.Error(err)
	},
}

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

View Source
var (

	// Logger 全局通用日志实例(兼容别名)。Init 之前为 Nop,调用安全。
	//
	// Deprecated: 此导出变量由 Init/Close 在 globalMu 下同步维护,但直接读它在 re-Init/Close
	// 期间非并发安全(L-E)。请改用包级函数 Info/Debug/Warn/Error/...(经 atomic 读取,
	// 并发安全)。保留仅为向后兼容,未来大版本可能移除。
	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 CloseDefaultSnapshot added in v1.3.0

func CloseDefaultSnapshot(s *DefaultSnapshot) error

CloseDefaultSnapshot 关闭 SnapshotDefault 捕获的旧 writers;用于新 logger 已提交成功后释放旧资源。

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 GetLevel added in v1.2.0

func GetLevel() zapcore.Level

GetLevel 包级 facade:返回默认日志当前级别。

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 RestoreDefaultSnapshot added in v1.3.0

func RestoreDefaultSnapshot(s *DefaultSnapshot) error

RestoreDefaultSnapshot 恢复 SnapshotDefault 捕获的默认 logger 状态,并关闭当前新 writers。

func SetDefaultLogManager added in v1.1.0

func SetDefaultLogManager(m *LogManager)

SetDefaultLogManager 提升指定 LogManager 为全局默认(atomic.Store,并发安全)。

func SetLevel added in v1.2.0

func SetLevel(l zapcore.Level) bool

SetLevel 包级 facade:运行期热切换默认日志级别(M19)。未 Init 时无操作返回 false。

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 DefaultSnapshot added in v1.3.0

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

DefaultSnapshot 是默认 logger 全局状态的 opaque 快照。 App 初始化用它实现“先安装新 logger,后续失败可恢复旧 logger”的事务边界。

func SnapshotDefault added in v1.3.0

func SnapshotDefault() *DefaultSnapshot

SnapshotDefault 返回默认 logger 全局状态快照。 快照仅用于 App 初始化回滚;调用方成功提交后必须 CloseDefaultSnapshot 释放旧 writers。

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 GetDefaultLogManager added in v1.3.0

func GetDefaultLogManager() *LogManager

GetDefaultLogManager 返回全局默认 LogManager(atomic 读取,并发安全)。

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) GetLevel added in v1.2.0

func (m *LogManager) GetLevel() zapcore.Level

GetLevel 返回当前日志级别(未 Init 返回 InfoLevel)。

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) InitPreservingPrevious added in v1.3.0

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

InitPreservingPrevious 初始化并发布 logger,但暂不关闭被替换的旧 writers。 App.Init 使用该方法配合 SnapshotDefault,在后续 hook 失败时可恢复旧 logger。

func (*LogManager) SetLevel added in v1.2.0

func (m *LogManager) SetLevel(l zapcore.Level) bool

SetLevel 运行期热切换日志级别(M19)。需先 Init;未 Init 时返回 false。 影响所有 core(app/api/db/console)——它们共享同一 AtomicLevel。

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