Log 框架 设计
Log 日志框架,从使用者角度 有两个部分,配置和接口。
接口设计
支持五种级别的日志打印,ERROR/WARN/INFO/DEBUG 支持日志命名空间隔离
配置设计
支持对每个命名空间的日志,级别选择 支持对每个命名空间的日志,配置输出目标 支出输出目标到控制台 和 文件 支持日志格式控制 (级别,线程,命名空间,消息,时间)
实现:
- LoggerFactory 按命名空间创建Logger
- Logger 按级别打印日志,把日志封装成LogMessage
- LoggerTarget 控制日志的输出目标,关联Logger
- LoggerFormat 控制日志的输出格式,关联Target,Format格式化LogMessage
- LoggerConfig,其中包括Target和Logger的关联,Logger和Format的关联,Format的初始化
Q1: LogMessage 如果把很多信息都保存下来,那么每次创建Message耗费大量内存 A1: 对于同一个Logger,相同的信息可以缓存下来,LogMessage只是持有引用。
Q2: Logger 打印如果提高性能,避免同步打印 A2: 打印文件可以设置buffer,然后单独进行刷;或者设计ringbuffer; 或者增加异步的Target,也就是输出线程和打印线程分离。


