zap是一个高性能日志库,下面简单介绍一下zap的使用。

1.下载zap包 (推荐学习:go)

因为zap是uber开源的,zap内使用的包是在go.uber.org/zap,如果直接go get这个包,可能会提示get不下来。

可以go get github.com/uber-go/zap,然后再把zap目录复制到src/go.uber.org下(可能还会需要go.uber.org/atomic和go.uber.org/multierr,均可参考该方法get下来)

2.zap简单封装示例。package logger

import (

"go.uber.org/zap"

"go.uber.org/zap/zapcore"

"gopkg.in/natefinch/lumberjack.v2"

)

// error logger

var errorLogger *zap.SugaredLogger

var levelMap = map[string]zapcore.Level{

"debug": zapcore.DebugLevel,

"info": zapcore.InfoLevel,

"warn": zapcore.WarnLevel,

"error": zapcore.ErrorLevel,

"dpanic": zapcore.DPanicLevel,

"panic": zapcore.PanicLevel,

"fatal": zapcore.FatalLevel,

}

func getLoggerLevel(lvl string) zapcore.Level {

if level, ok := levelMap[lvl]; ok {

return level

}

return zapcore.InfoLevel

}

func init() {

fileName := "zap.log"

level := getLoggerLevel("debug")

syncWriter := zapcore.AddSync(&lumberjack.Logger{

Filename: fileName,

MaxSize: 1 << 30, //1G

LocalTime: true,

Compress: true,

})

encoder := zap.NewProductionEncoderConfig()

encoder.EncodeTime = zapcore.ISO8601TimeEncoder

core := zapcore.NewCore(zapcore.NewJSONEncoder(encoder), syncWriter, zap.NewAtomicLevelAt(level))

logger := zap.New(core, zap.AddCaller(), zap.AddCallerSkip(1))

errorLogger = logger.Sugar()

}

func Debug(args ...interface{}) {

errorLogger.Debug(args...)

}

func Debugf(template string, args ...interface{}) {

errorLogger.Debugf(template, args...)

}

func Info(args ...interface{}) {

errorLogger.Info(args...)

}

func Infof(template string, args ...interface{}) {

errorLogger.Infof(template, args...)

}

func Warn(args ...interface{}) {

errorLogger.Warn(args...)

}

func Warnf(template string, args ...interface{}) {

errorLogger.Warnf(template, args...)

}

func Error(args ...interface{}) {

errorLogger.Error(args...)

}

func Errorf(template string, args ...interface{}) {

errorLogger.Errorf(template, args...)

}

func DPanic(args ...interface{}) {

errorLogger.DPanic(args...)

}

func DPanicf(template string, args ...interface{}) {

errorLogger.DPanicf(template, args...)

}

func Panic(args ...interface{}) {

errorLogger.Panic(args...)

}

func Panicf(template string, args ...interface{}) {

errorLogger.Panicf(template, args...)

}

func Fatal(args ...interface{}) {

errorLogger.Fatal(args...)

}

func Fatalf(template string, args ...interface{}) {

errorLogger.Fatalf(template, args...)

}

简单封装后使用示例:package main

import (

"logger"

)

func main() {

logger.Infof("simple zap logger example")

}

zap支持php,golang的zap怎么使用相关推荐

  1. GoLang(一)--Zap框架

    介绍 在许多Go语言项目中,我们需要一个好的日志记录器能够提供下面这些功能: 能够将事件记录到文件中,而不是应用程序控制台. 日志切割-能够根据文件大小.时间或间隔等来切割日志文件. 支持不同的日志级 ...

  2. golang byte 转writer_聊聊golang的zap的WriteSyncer

    序 本文主要研究一下golang的zap的WriteSyncer WriteSyncer zap@v1.16.0/zapcore/write_syncer.go type WriteSyncer in ...

  3. Golang高性能日志库zap + lumberjack 日志切割组件详解

    文章篇幅较长,可以先收藏防止迷路~ 目录 zap日志库 1. why zap? 2. 简单使用 3. 自定义logger例子 4. Gin项目使用zap 6. lumberjack 日志切割组件 za ...

  4. Golang zap 快速上手

    文章目录 1.zap 是什么? 2.zap 快速上手 1.安装 Zap 2.创建 Logger 3.配置 Logger 4.记录日志 5.输出日志 6.添加 Caller 信息 3.日志滚动 4.小结 ...

  5. Golang一日一库之 日志库 zap

    简介 在开发过程中 会使用到日志库去记录错误的日志,尤其是golang中 有无穷无尽的error 如果不记录,当你的代码出错,就无从排错了. zap 是开源的 Go 高性能日志库 主要有以下特点: 支 ...

  6. Golang 操作 Logger、Zap Logger 日志

    阅读目录 Logger 介绍 默认的 Go Logger Go Logger 的优势和劣势 Zap Logger 1. Uber-go Zap 2. 为什么选择 Uber-go zap 3. 安装 4 ...

  7. Golang 日志框架 Zap 入坑指南

    文章目录 简介 Cases case 1: Hello World case 2: SugaredLogger case 3: 定制化 SugaredLogger 使用 Console 格式 修改日期 ...

  8. golang xorm 自定义日志记录器,使用zap实现日志输出、切割日志

    目录 1.准备并下载好需要的包 2. 连接postgresql数据库 3. zap日志工具 4.实现xorm 自定义日志记录器 5.使用 完整代码 1.准备并下载好需要的包 xorm.io/xorm ...

  9. golang框架gin的日志处理和zap lumberjack日志使用

    目录 gin自带日志 新建logger.go mian.go 引用 zap lumberjack接管gin日志 新建logger.go main.go 调用 gin框架好用,轮子也多,我也来丰富下内容 ...

最新文章

  1. 老李推荐:第5章5节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 获取系统服务引用 1...
  2. iphone-common-codes-ccteam源代码 CCUIAlertView.m
  3. ICA独立成分分析—FastICA基于负熵最大
  4. 【转载保存】大型推荐系统架构图设计图
  5. codeigniter 辅助函数 - 敏感词过滤
  6. Python 列表推导 、生成器表达式与声明式编程
  7. linux信号及其含义
  8. Windows核心编程_Edit控件无法输入问题
  9. Flutter报错 使用Column等容器包裹ListView报错的问题
  10. STL标准模版库----queue/deque操作大全
  11. 拓端tecdat|R语言用igraph绘制网络图可视化
  12. 以太坊DAO之股东协会智能合约
  13. 计算机wind10切换桌面wind7系统,win10一键切回win7桌面方法_Win10桌面切换成Win7界面的方法...
  14. 西门子CPU扩展以太网接口的一种解决方案
  15. WAP加密和WEP加密比较
  16. UCenter单点登录(简单版)
  17. ggplot2_ `scale_xxx()`标度调整
  18. Msfvenonm生成后门木马
  19. vue3组件之间通信(三)——爷孙组件传递属性和方法
  20. 物体移出镜头外出现ui提示

热门文章

  1. Check failed: error == cudaSuccess (35 vs. 0) CUDA driver version is insufficient for CUDA runtime
  2. pyqt5界面与逻辑分离--信号槽的装饰器实现方式
  3. 编译android.mk
  4. c语言一段字符加密,请问C语言怎么实现对一长串字符进行MD5加密?
  5. JAVA语言教学重点_《JAVA语言》教学大纲
  6. SpringBoot中maven打包,启动报没有主清单属性
  7. 微信服务通知消息找回_第三方平台微信服务号模板消息怎么发送
  8. php用ajaxs上传图片_php+ajax实现图片文件上传功能实例
  9. python格式规范的要求_python模块规定的格式,按照这样写,最规范
  10. android小程序源代码_我从 Android 转到微信小程序的思考