问题域/PD-242

可插拔日志系统

Pluggable Logging System

通过 Factory 模式实现可插拔日志后端,支持控制台和文件输出、日志轮转和级别过滤

子问题

1.日志后端切换

2.文件轮转策略

3.跨语言日志配置

4.glog 封装与级别映射差异处理

5.多线程环境下日志输出的线程安全保证

各项目的解法1 solutions

Signals

横向对比

维度zvec
后端注册Factory 模板 + 编译期宏注册,运行时按字符串名称创建
分发机制LoggerBroker 全静态方法,删除构造函数,零实例化
级别控制宏内 IsLevelEnabled 短路,热路径避免 va_list 构造
文件轮转glog 封装,FLAGS_max_log_size 大小轮转 + EnableLogCleaner 过期清理
跨语言支持Python IntEnum 与 C++ const int 值对齐,init() 枚举校验后传字符串
安全关闭atexit 注册 ExitLogHandler → Unregister → glog ShutdownGoogleLogging

最佳实践

1.LoggerBroker 单例管理全局日志,atexit 保证清理

2.宏内先检查 IsLevelEnabled 再构造 va_list,热路径零开销

3.Factory 编译期注册新后端只需一行宏,符合开闭原则

4.默认 ConsoleLogger + WARN 级别,零配置即可用