nanolog vs zerolog
后端开发过程中,经常需要对一些重要的事件做日志,方便观察程序的控制流,建立对程序的理解和自信,对于缺少好用debugger (也许是delve) 的golang 来说, 日志更是重要的调试手段。大部分时候,使用标准库自带的log package 已经够用,log 包缺少输出级别的控制,不过我们可以基于log 包做简单的包装也足以够用,尽量减少对第三方包的依赖,我觉得应该是个好实践。
不过当你发现log 太多,对程序性能产生了明显的影响时,也许可以考虑下面介绍的两个日志库: nanolog和zerolog。 nanolog 是受到同名c++ 库nanolog 启发, zerolog 是受到uber 的日志库zap 的启发,golang社区里,对高性能日志库的追求,引发了编译器团队对一些使用模式的优化。
首先,看一下nanolog 是怎么个使用法:
package main
import (
"os"
"github.com/ScottMansfield/nanolog"
)
var h nanolog.Handle
func init() {
nanolog.SetWriter(os.Stderr)
h = nanolog.AddLogger("Example %i