用 Go 从零实现日志包 - 第零篇 序言

2023-01-05 18:00:01 浏览数 (1)

1 浅谈日志

什么是日志?它不局限于系统日志,程序日志,操作日志,凡是时序相关的、持续产生的数据,都可以称为日志。

日志通过收集、结构化、过滤等步骤后,为开发者排查问题提供了依据,也是监控、报警系统的基石。同时也为我的工作提供了保障

2 关于日志包

设计一个日志包,需要考虑的基础功能有日志级别设置、标准输出和文件、输出格式配置、日志的时间戳、文件与打印行号、正文。高级功能有按级别分类输出、支持结构化日志、支持日志轮转。

本日志包基于 zap 实现,代码量限制在 800 行左右(不包含测试代码),目前支持的特性有:

  • 颜色输出,告别黑白,尽显尊贵打工人身份
  • 支持多种日志级别,遵守 Go 语言设计哲学
  • 支持日志轮转,日志大小达到一定量级时,对日志进行切割、压缩,并转存
  • 具备 Hook 能力。例如某个级别日志产生时,调用告警接口
  • 兼容标准库 log ,轻松替代标准 log
  • ...

接下来我们将一起,一步一步实现这个日志包的各个功能,最终实现一个可用于生产环境的日志包。每实现一个特性,都会添加可执行的单元测试。

3 目录

  • 输出级别与初始化配置
  • 各级别日志打印函数
  • 结构化输出格式
  • 我想把这玩意儿染成绿的(支持颜色输出)
  • 欲练神功,必先...(日志切割、压缩、转存)
  • 兼容标准库 log

4 其他

本系列文章的目录结构与文章名灵感来自 极客兔兔。

如果文章对你有用,点个赞,就是对我的写作最大的鼓励。

本人技术能力捉襟见肘,如果有写的不对的地方,请留言斧正,十分感谢 ?

0 人点赞