Documentation
¶
Index ¶
- Variables
- func APILog() *zap.Logger
- func Close() error
- func CloseDefaultSnapshot(s *DefaultSnapshot) error
- func DBLog() *zap.Logger
- func Debug(msg string, fields ...zap.Field)
- func Debugf(template string, args ...any)
- func Error(msg string, fields ...zap.Field)
- func Errorf(template string, args ...any)
- func Fatal(msg string, fields ...zap.Field)
- func Fatalf(template string, args ...any)
- func GetLevel() zapcore.Level
- func Info(msg string, fields ...zap.Field)
- func Infof(template string, args ...any)
- func Init(cfg *config.Config) error
- func RestoreDefaultSnapshot(s *DefaultSnapshot) error
- func SetDefaultLogManager(m *LogManager)
- func SetLevel(l zapcore.Level) bool
- func Sync() error
- func Warn(msg string, fields ...zap.Field)
- func Warnf(template string, args ...any)
- type DefaultSnapshot
- type LogManager
Constants ¶
This section is empty.
Variables ¶
var DefaultLogger = NewLogManager()
DefaultLogger 默认日志管理器,包级 facade 代理到它。
Deprecated: 直接替换该导出变量(logger.DefaultLogger = m)不会更新包级 facade 使用的 atomic 快照,也不是并发安全的替换方式。请用 SetDefaultLogManager(m)。 直接调用 DefaultLogger.Init/Close/SetLevel/GetLevel 仍保留兼容,并受 LogManager 自身锁保护。
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 字段别名,用于简化日志字段定义
var ( // Logger 全局通用日志实例(兼容别名)。Init 之前为 Nop,调用安全。 // // Deprecated: 此导出变量由 Init/Close 在 globalMu 下同步维护,但直接读它在 re-Init/Close // 期间非并发安全(L-E)。请改用包级函数 Info/Debug/Warn/Error/...(经 atomic 读取, // 并发安全)。保留仅为向后兼容,未来大版本可能移除。 Logger = zap.NewNop() )
Functions ¶
func CloseDefaultSnapshot ¶ added in v1.3.0
func CloseDefaultSnapshot(s *DefaultSnapshot) error
CloseDefaultSnapshot 关闭 SnapshotDefault 捕获的旧 writers;用于新 logger 已提交成功后释放旧资源。
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,并发安全)。
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 (*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 已知行为, 这里把这类错误识别并忽略,只返回真实的写入失败。