Zap简单使用
前言
zap 是 uber 开源的一个日志记录的包, uber 在 go 的领域建树颇多, zap 更是优秀, 相比于自带的 log ,他有更多的功能, 当然, 最显眼的还是他很快, 本文介绍 zap 模块的基本使用
正文
zap的使用由 编码器 和 初始化 组成, 编码器表示输出的格式, DEMO如下(使用默认的编码器)
package tool
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
// Log zapLog对象
var Log *zap.Logger
Log, _ = zap.NewProduction()
使用方法为直接调用生成的 Log, 比如
_, err := tools.DB.Exec(sqlStr, formPassWord, time.Now(), formPhone)
if err != nil {
tools.Log.Error("1002", zap.Error(err)) // log
tools.FormatError(c, 1002, "error")
return
}
将日志保存在本地
如果项目有日志服务进行日志收集那么到这里就结束了, 如果需要将日志写在本地你还需要看下去
我们使用第三方包来达到这个效果
该包可以自己进行日志的切割, 避免日志推挤过多, 当然你不需要日志切割等高级功能的话你完全可以直接使用 os.Create 来适配
结合 zap 使用如下
package tools
import (
"github.com/natefinch/lumberjack"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
// Log zapLog对象
var Log *zap.Logger
// 日志切割设置
func getLogWriter() zapcore.WriteSyncer {
lumberJackLogger := &lumberjack.Logger{
Filename: "api.log", // 日志文件位置
MaxSize: 10, // 日志文件最大大小(MB)
MaxBackups: 5, // 保留旧文件最大数量
MaxAge: 30, // 保留旧文件最长天数
Compress: false, // 是否压缩旧文件
}
return zapcore.AddSync(lumberJackLogger)
}
// 编码器
func getEncoder() zapcore.Encoder {
// 使用默认的JSON编码
encoderConfig := zap.NewProductionEncoderConfig()
encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
return zapcore.NewJSONEncoder(encoderConfig)
}
// InitLogger 初始化Logger
func InitLogger() {
writeSyncer := getLogWriter()
encoder := getEncoder()
core := zapcore.NewCore(encoder, writeSyncer, zapcore.DebugLevel)
Log = zap.New(core, zap.AddCaller())
}
使用方法与上方一致
Log.Error 代表生成一条 Error 的log, 参数一是 msg 内容, 这个是自定义的, 根据团队的规范来, 参数二是 err 信息, 使用 zap.Error 包装可生成额外的信息比如报错的路径/文件/行 等信息, 输出的日志类似
{"level":"ERROR","ts":"2020-04-19T12:38:14.587+0800","caller":"property/view.go:464","msg":"1002","error":"Error 1054: Unknown column 'propertyid' in 'on clause'"}
Zap简单使用的更多相关文章
- javaweb学习总结(二十六)——jsp简单标签标签库开发(二)
一.JspFragment类介绍 javax.servlet.jsp.tagext.JspFragment类是在JSP2.0中定义的,它的实例对象代表JSP页面中的一段符合JSP语法规范的JSP片段, ...
- 安全性测试:OWASP ZAP使用入门指南
免责声明: 本文意在讨论使用工具来应对软件研发领域中,日益增长的安全性质量测试需求.本文涉及到的工具不可被用于攻击目的. 1. 安全性测试 前些天,一则12306用户账号泄露的新闻迅速发酵,引起了购票 ...
- (转)OWASP ZAP下载、安装、使用(详解)教程
OWASP Zed攻击代理(ZAP)是世界上最受欢迎的免费安全审计工具之一,由数百名国际志愿者*积极维护.它可以帮助您在开发和测试应用程序时自动查找Web应用程序中的安全漏洞. 也可以说:ZAP是一个 ...
- javaweb(二十六)——jsp简单标签标签库开发(二)
一.JspFragment类介绍 javax.servlet.jsp.tagext.JspFragment类是在JSP2.0中定义的,它的实例对象代表JSP页面中的一段符合JSP语法规范的JSP片段, ...
- 【BZOJ】1101: [POI2007]Zap(莫比乌斯+分块)
http://www.lydsy.com/JudgeOnline/problem.php?id=1101 无限膜拜数论和分块orz 首先莫比乌斯函数的一些性质可以看<初等数论>或<具 ...
- ZAP介绍
Zed Attack Proxy简写为ZAP,是一个简单易用的渗透测试工具,是发现Web应用中的漏洞的利器,更是渗透测试爱好者的好东西.ZAP下载地址:https://www.owasp.org/in ...
- golang开发:类库篇(一) Zap高性能日志类库的使用
为什么要用zap来写日志 原来是写PHP的,一直用的error_log,第一次写Go项目的时候,还真不知道该怎么写日志,后来就按照PHP的写法自己不成规范的捣鼓写.去了新公司之后,发现用的是zap.后 ...
- 安全性测试:OWASP ZAP 2.8 使用指南(二):ZAP基础操作
ZAP桌面应用 ZAP桌面应用由以下元素组成: 1. 菜单栏 – 提供多种自动化和手动工具的访问 2. 工具栏 – 提供快速访问最常用组件的用户接口 3. 树结构窗口 – 展示被测网站树结构和脚 ...
- OWASP ZAP使用教程
一.安装 Windows下载下来的是exe的,双击就可以了! Linuxg下载下来的不是.sh就是tar.gz,这个就更加简单了. 唯一需要注意的是: Windows和Linux版本需要运行Java ...
随机推荐
- 软件工程团队作业-Alpha阶段项目复审
Alpha阶段项目复审 复审人:黄杰 复审总结表 小组的名字和链接 优点 缺点,bug/140字 最终名次 项目 一个普通的团队 https://www.cnblogs.com/clsgghost/p ...
- 认识css常见的hack
一.认识css hack CSS Hack只要是来解决浏览器局部的兼容性问题,主要是因为每个浏览器对css的解析各不相同,导致输出到页面的效果的差异: 二.css hack的三种常见形式:css属性h ...
- 【Codeforces 1097F】Alex and a TV Show(bitset & 莫比乌斯反演)
Description 你需要维护 \(n\) 个可重集,并执行 \(m\) 次操作: 1 x v:\(X\leftarrow \{v\}\): 2 x y z:\(X\leftarrow Y \cu ...
- 题解-CF1401E Divide Square
题面 CF1401E Divide Square 给一个正方形平面边长为 \(10^6\),给 \(n\) 条横线段和 \(m\) 条竖线段,每条线段都与正方形边缘相交且一条直线上不会有两条线段,求被 ...
- 题解-[WC2011]最大XOR和路径
[WC2011]最大XOR和路径 给一个 \(n\) 个点 \(m\) 条边(权值为 \(d_i\))的无向有权图,可能有重边和子环.可以多次经过一条边,求 \(1\to n\) 的路径的最大边权异或 ...
- 哔哩哔哩批量采集器(支持windows和mac)
链接:https://pan.baidu.com/s/1jW2ea0Cl1xL5xN9DuB8Fcw 密码:klyw
- Sublime2-3 Package Control安装
从菜单 View - Show Console 或者 ctrl + ~ 快捷键,调出 console.将以下 Python 代码粘贴进去并 enter 执行,不出意外即完成安装.以下提供 ST3 和 ...
- Excel优雅导出
流程 原来写过一篇文章,是介绍EasyExcel的,但是现在有些业务需要解决,流程如下 1.需要把导出条件转换成中文并存入数据库 2.需要分页导出 3.需要上传FTP或者以后上传OSS 解决方案 大体 ...
- Typora+图床详解(小白都能学得会)
Typora+图床详解(小白都能学得会) 1 了解工作 博客中用的笔记软件--Typora(Markdown语法) 博客中用的图床--阿里云对象存储(Object Storage Service,简称 ...
- DRF框架笔记
序列化器类的定义格式? 继承serializers.Serializer:字段 = serializers.字段类型(选项参数) 序列化器类的基本使用? 序列化器类(instance=None, da ...