Documentation
¶
Index ¶
- Variables
- func APILog() *zap.Logger
- func Close() 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 Info(msg string, fields ...zap.Field)
- func Infof(template string, args ...any)
- func Init(cfg *config.Config) error
- func SetDefaultLogManager(m *LogManager)
- func Sync() error
- func Warn(msg string, fields ...zap.Field)
- func Warnf(template string, args ...any)
- type LogManager
Constants ¶
This section is empty.
Variables ¶
var DefaultLogger = NewLogManager()
DefaultLogger 默认日志管理器,包级 facade 代理到它。
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 字段别名,用于简化日志字段定义
var ( // Logger 全局通用日志实例。Init 之前为 Nop,调用安全。 Logger = zap.NewNop() )
Functions ¶
func SetDefaultLogManager ¶ added in v1.1.0
func SetDefaultLogManager(m *LogManager)
SetDefaultLogManager 提升指定 LogManager 为全局默认。
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 (*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 已知行为, 这里把这类错误识别并忽略,只返回真实的写入失败。