跳转至

二进制日志

在对延迟极端敏感的程序里,有时会连格式化文本的开销都不能接受,希望日志系统能够进一步减少计算量以及 IO 量。NanoLog 就是根据这样的思想设计出来的日志系统。

考虑到日志系统中的大部分字符串都是不变的,只有其中少数几个变量会改变,那么就没有必要每次都输出重复的内容,而是在编译阶段就预处理好所有格式字符串,只提取需要保存的变量位置。在实际运行时,就可以只写入对应的字符串 ID 以及涉及的变量即可。考虑到 CPU 速度远比磁盘、网络等 IO 设备速度快,为了减少写入 IO 开销,还可以将日志先压缩后再写入。需要查看的时候,再使用解压缩工具,将二进制日志文件解压,并根据格式字符串还原为人类可读的纯文本。这相当于将运行时的开销分摊到了编译时和后处理阶段。


最后更新: 2021-09-06 13:49:01
本页作者: Howard Lau