zap 是 Uber 开源的 logging 库。
Zap Logger
Zap 提供两种日志记录器(logger):Sugared Logger 和 Logger。前者者支持结构化日志以及 Printf 风格日志,后者只支持结构化日志,但后者性能更好。
|
|
|
|
Zap 支持三种方式创建预置 logger:NewExample()、NewProduction()、NewDevelopment()。它们的区别是日志信息内容。
定制 Logger
你也可以定制 logger(custom logger)来实现额外功能,比如输出日志到文件1。此时,需要使用 New() 方法,而不是前面的 NewXXX()。New() 方法的函数签名如下。它需要接收一个 zapcore 参数。
|
|
配置 core 需要 Encoder,WriteSyncer,LogLevel:
- Encoder:如何写日志;
- WriteSyncer:日志写到哪;
- LogLevel:哪个级别的日志需要记录。
|
|
示例:
|
|
日志轮转
Zap 不原生支持日志轮转2,但可以接入第三方库来实现,比如 lumberjack 作为 zapcore.WriteSyncer。
|
|
实现 go-logr/logr 接口
通过 zapr.NewLogger 接收一个 zap.Logger 参数,返回 logr.Logger 实现。
|
|