用 Go 从零实现日志包 - 第零篇 序言
2023-02-19 12:23:24 时间
1 浅谈日志
什么是日志?它不局限于系统日志,程序日志,操作日志,凡是时序相关的、持续产生的数据,都可以称为日志。
日志通过收集、结构化、过滤等步骤后,为开发者排查问题提供了依据,也是监控、报警系统的基石。同时也为我的工作提供了保障。
2 关于日志包
设计一个日志包,需要考虑的基础功能有日志级别设置、标准输出和文件、输出格式配置、日志的时间戳、文件与打印行号、正文。高级功能有按级别分类输出、支持结构化日志、支持日志轮转。
本日志包基于 zap 实现,代码量限制在 800 行左右(不包含测试代码),目前支持的特性有:
- 颜色输出,告别黑白,
尽显尊贵打工人身份 - 支持多种日志级别,遵守 Go 语言设计哲学
- 支持日志轮转,日志大小达到一定量级时,对日志进行切割、压缩,并转存
- 具备 Hook 能力。例如某个级别日志产生时,调用告警接口
- 兼容标准库
log
,轻松替代标准log
- ...
接下来我们将一起,一步一步实现这个日志包的各个功能,最终实现一个可用于生产环境的日志包。每实现一个特性,都会添加可执行的单元测试。
3 目录
- 输出级别与初始化配置
- 各级别日志打印函数
- 结构化输出格式
- 我想把这玩意儿染成绿的(支持颜色输出)
- 欲练神功,必先...(日志切割、压缩、转存)
- 兼容标准库
log
4 其他
本系列文章的目录结构与文章名灵感来自 极客兔兔。
如果文章对你有用,点个赞,就是对我的写作最大的鼓励。
本人技术能力捉襟见肘,如果有写的不对的地方,请留言斧正,十分感谢 ?
相关文章
- Jgit的使用笔记
- 利用Github Action实现Tornadofx/JavaFx打包
- 叹息!GitHub Trending 即将成为历史!
- 微软软了?开源社区讨论炸锅,GitHub CEO 亲自来答
- GitHub Trending 列表频现重复项,前后端都没去重?
- Photoshop Elements 2021版本软件安装教程(mac+windows全版本都有)
- (ps全版本)Photoshop 2020的安装与破解教程(mac+windows全版本都有)
- (ps全版本)Photoshop cc2018的安装与破解教程(mac+windows全版本,包括2023
- 环境搭建:Oracle GoldenGate 大数据迁移到 Redshift/Flat file/Flume/Kafka测试流程
- 每个开发人员都要掌握的:最小 Linux 基础课
- 来撸羊毛了!Windows 环境下 Hexo 博客搭建,并部署到 GitHub Pages
- 超实用!手把手入门 MongoDB:这些坑点请一定远离
- 【GitHub日报】22-10-09 zustand、neovim、webtorrent、express 等4款App今日上新
- 【GitHub日报】22-10-10 brew、minio、vite、seaweedfs、dbeaver 等8款App今日上新
- 【GitHub日报】22-10-11 cobra、grafana、vue、ToolJet、redwood 等13款App今日上新
- Photoshop 2018 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2017 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2020 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2023 资源免费下载(mac+windows全版本都有,包括最新的2023)
- 最新版本Photoshop CC2018软件安装教程(mac+windows全版本都有,包括2023