Skip to main content

Log 框架 设计

Published 1 min readMarkdown

Log 日志框架,从使用者角度 有两个部分,配置和接口。

接口设计

支持五种级别的日志打印,ERROR/WARN/INFO/DEBUG 支持日志命名空间隔离

配置设计

支持对每个命名空间的日志,级别选择 支持对每个命名空间的日志,配置输出目标 支出输出目标到控制台 和 文件 支持日志格式控制 (级别,线程,命名空间,消息,时间)

实现:

  1. LoggerFactory 按命名空间创建Logger
  2. Logger 按级别打印日志,把日志封装成LogMessage
  3. LoggerTarget 控制日志的输出目标,关联Logger
  4. LoggerFormat 控制日志的输出格式,关联Target,Format格式化LogMessage
  5. LoggerConfig,其中包括Target和Logger的关联,Logger和Format的关联,Format的初始化

Q1: LogMessage 如果把很多信息都保存下来,那么每次创建Message耗费大量内存 A1: 对于同一个Logger,相同的信息可以缓存下来,LogMessage只是持有引用。

Q2: Logger 打印如果提高性能,避免同步打印 A2: 打印文件可以设置buffer,然后单独进行刷;或者设计ringbuffer; 或者增加异步的Target,也就是输出线程和打印线程分离。

No comments yet. Be the first to comment.

More from this blog