> zap是uber开源的Go高性能日志库
[TOC]
## 安装
~~~
go get -u go.uber.org/zap
~~~
## 封装函数 (/utils/zap_logger/logger.go)
~~~
package zap_logger
import (
"fmt"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"os"
)
var Logger *zap.Logger
var SugarLogger *zap.SugaredLogger
func init() {
fmt.Println("------------init logger----------")
var err error
var rootPath string
// 构造EncoderConfig
encoderConfig := zapcore.EncoderConfig{
TimeKey: "timestamp",
LevelKey: "severity",
NameKey: "logger",
CallerKey: "caller",
MessageKey: "message",
StacktraceKey: "stacktrace",
LineEnding: "\n",
EncodeLevel: zapcore.LowercaseLevelEncoder,
EncodeTime: zapcore.ISO8601TimeEncoder,
EncodeDuration: zapcore.SecondsDurationEncoder,
EncodeCaller: zapcore.FullCallerEncoder,
}
if rootPath, err = os.Getwd(); err != nil {
panic(err)
}
// 构造 Config
config := zap.Config{
Level: zap.NewAtomicLevelAt(zapcore.DebugLevel),
Development: true,
Encoding: "json",
EncoderConfig: encoderConfig,
InitialFields: map[string]interface{}{"MyName": "kainhuck"},
OutputPaths: []string{rootPath + "/runtime/zap2.log"},
ErrorOutputPaths: []string{rootPath + "/runtime/zap2.log"},
}
// 可以构造Logger了
Logger, err = config.Build()
if err != nil {
panic(err)
}
// 然后是SugarLogger
SugarLogger = Logger.Sugar()
fmt.Println("------------init logger----end------")
}
func Error(args ...interface{}) {
SugarLogger.Error(args)
}
func Debug(args ...interface{}) {
SugarLogger.Debug(args)
}
func Info(args ...interface{}) {
SugarLogger.Info(args)
}
func Warn(args ...interface{}) {
SugarLogger.Warn(args)
}
~~~
## 测试调用函数
~~~
//zap_logger.Debug("this is debug info")
zap_logger.Error("this is debug info")
~~~
- 基础知识
- 开发环境
- 包名规则
- 包初始化 (init)
- 基础数据类型
- 基础类型转换
- 格式化输出
- go指针
- 流程控制语句
- 函数定义
- 匿名函数
- 数组和切片
- map集合
- 结构体
- Interface接口
- 日期处理
- 数学计算
- 正则表达式
- 协程 (并发处理)
- channel
- waitgroup
- mutex (锁机制)
- websocket
- protobuf
- Redis
- 错误处理
- 打包程序
- NSQ消息队列
- 单元测试
- beego
- 安装入门
- Gin
- 快速入门
- 路由与控制器
- 处理请求参数
- 表单验证
- 处理响应结果
- 渲染HTML模版
- 访问静态文件
- Gin中间件
- Cookie处理
- Session处理
- Gin上传文件
- swagger
- pprof性能测试
- GORM
- 入门教程
- 模型定义
- 数据库连接
- 插入数据
- 查询数据
- 更新数据
- 删除数据
- 事务处理
- 关联查询
- 属于 (BELONG TO)
- 一对一 (Has One)
- 一对多 (Has Many)
- 多对多 (Many to Many)
- 预加载 (Preloading)
- 错误处理
- 第三方常用插件
- viper 读取配置文件
- zap 高性能日志
- Nginx代理配置
- Goland 快捷键