😚一个不甘平凡的普通人,致力于为Golang社区和算法学习做出贡献,期待您的关注和认可,陪您一起学习打卡!!!😘😘😘
🤗专栏:算法学习
🤗专栏:Go实战
💬个人主页:个人主页
文章目录
- Zap日志库
- 常用方法
- 练手案例
哥们带你学go-zap包,感谢支持,我会继续努力的!
Zap日志库
引入:“go.uber.org/zap”
zap包使用非常简单,其有非常明显的特征和优点
- 高性能
可以快速地写入大量的日志数据。 - 低内存占用:
内存占用非常低,可以在内存敏感的场景下使用。 - 可扩展性
提供了多种可扩展的日志输出方式,例如控制台输出、文件输出、网络输出等,可以灵活地适应不同的需求 - 日志级别丰富
支持多种日志级别,包括 debug、info、warn 和 error 等级别,可以记录不同程度的信息,方便问题追踪和排查 - 内置字段支持
支持内置字段的添加,可以轻松地记录更加详细的信息,例如请求 ID、用户 ID 等 - 多种日志格式支持
支持多种日志格式,例如 JSON、Console、Logfmt 等格式,可以根据需要选择不同的格式输出日志。
常用方法
logger.Debug(“debug log”)
使用此方法记录 debug 级别的日志信息。通常用于记录系统的调试信息,例如输出变量的值、函数执行路径等。
logger.Info(“info log”)
使用此方法记录 info 级别的日志信息。通常用于记录系统正常运行期间的关键信息,例如登录成功、任务完成等。
logger.Warn(“warning log”)
使用此方法记录 warn 级别的日志信息。通常用于记录系统出现一些非致命性的问题或潜在的错误,例如文件不存在、网络连接超时等。
logger.Error(“error log”, zap.Error(err))
使用此方法记录 error 级别的日志信息。通常用于记录系统出现了严重的异常或错误,例如数据库连接失败、程序崩溃等。在此方法中,还可以传递一个 zap.Error() 方法用于记录 error 对象的详细信息,例如堆栈跟踪信息等。
练手案例
package main
import (
"go.uber.org/zap"
)
func main() {
// 创建一个生产环境下的logger实例
logger, err := zap.NewProduction()
if err != nil {
panic(err)
}
// 确保所有日志都被写进磁盘 可以添加匿名函数对Sync()方法检验
defer logger.Sync()
// 打印不同级别的日志信息
logger.Debug("debug log")
logger.Info("info log")
logger.Warn("warning log")
logger.Error("error log", zap.Error(err))
// 带有字段的日志信息
//通过zap.String(),zap.Int() 添加额外的字段信息,更好的管理日志信息
logger.Info("user created", zap.String("name", "John"), zap.Int("age", 30))
}