zap支持php,golang的zap怎么使用
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怎么使用相关推荐
- GoLang(一)--Zap框架
介绍 在许多Go语言项目中,我们需要一个好的日志记录器能够提供下面这些功能: 能够将事件记录到文件中,而不是应用程序控制台. 日志切割-能够根据文件大小.时间或间隔等来切割日志文件. 支持不同的日志级 ...
- golang byte 转writer_聊聊golang的zap的WriteSyncer
序 本文主要研究一下golang的zap的WriteSyncer WriteSyncer zap@v1.16.0/zapcore/write_syncer.go type WriteSyncer in ...
- Golang高性能日志库zap + lumberjack 日志切割组件详解
文章篇幅较长,可以先收藏防止迷路~ 目录 zap日志库 1. why zap? 2. 简单使用 3. 自定义logger例子 4. Gin项目使用zap 6. lumberjack 日志切割组件 za ...
- Golang zap 快速上手
文章目录 1.zap 是什么? 2.zap 快速上手 1.安装 Zap 2.创建 Logger 3.配置 Logger 4.记录日志 5.输出日志 6.添加 Caller 信息 3.日志滚动 4.小结 ...
- Golang一日一库之 日志库 zap
简介 在开发过程中 会使用到日志库去记录错误的日志,尤其是golang中 有无穷无尽的error 如果不记录,当你的代码出错,就无从排错了. zap 是开源的 Go 高性能日志库 主要有以下特点: 支 ...
- Golang 操作 Logger、Zap Logger 日志
阅读目录 Logger 介绍 默认的 Go Logger Go Logger 的优势和劣势 Zap Logger 1. Uber-go Zap 2. 为什么选择 Uber-go zap 3. 安装 4 ...
- Golang 日志框架 Zap 入坑指南
文章目录 简介 Cases case 1: Hello World case 2: SugaredLogger case 3: 定制化 SugaredLogger 使用 Console 格式 修改日期 ...
- golang xorm 自定义日志记录器,使用zap实现日志输出、切割日志
目录 1.准备并下载好需要的包 2. 连接postgresql数据库 3. zap日志工具 4.实现xorm 自定义日志记录器 5.使用 完整代码 1.准备并下载好需要的包 xorm.io/xorm ...
- golang框架gin的日志处理和zap lumberjack日志使用
目录 gin自带日志 新建logger.go mian.go 引用 zap lumberjack接管gin日志 新建logger.go main.go 调用 gin框架好用,轮子也多,我也来丰富下内容 ...
最新文章
- 老李推荐:第5章5节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 获取系统服务引用 1...
- iphone-common-codes-ccteam源代码 CCUIAlertView.m
- ICA独立成分分析—FastICA基于负熵最大
- 【转载保存】大型推荐系统架构图设计图
- codeigniter 辅助函数 - 敏感词过滤
- Python 列表推导 、生成器表达式与声明式编程
- linux信号及其含义
- Windows核心编程_Edit控件无法输入问题
- Flutter报错 使用Column等容器包裹ListView报错的问题
- STL标准模版库----queue/deque操作大全
- 拓端tecdat|R语言用igraph绘制网络图可视化
- 以太坊DAO之股东协会智能合约
- 计算机wind10切换桌面wind7系统,win10一键切回win7桌面方法_Win10桌面切换成Win7界面的方法...
- 西门子CPU扩展以太网接口的一种解决方案
- WAP加密和WEP加密比较
- UCenter单点登录(简单版)
- ggplot2_ `scale_xxx()`标度调整
- Msfvenonm生成后门木马
- vue3组件之间通信(三)——爷孙组件传递属性和方法
- 物体移出镜头外出现ui提示
热门文章
- Check failed: error == cudaSuccess (35 vs. 0) CUDA driver version is insufficient for CUDA runtime
- pyqt5界面与逻辑分离--信号槽的装饰器实现方式
- 编译android.mk
- c语言一段字符加密,请问C语言怎么实现对一长串字符进行MD5加密?
- JAVA语言教学重点_《JAVA语言》教学大纲
- SpringBoot中maven打包,启动报没有主清单属性
- 微信服务通知消息找回_第三方平台微信服务号模板消息怎么发送
- php用ajaxs上传图片_php+ajax实现图片文件上传功能实例
- python格式规范的要求_python模块规定的格式,按照这样写,最规范
- android小程序源代码_我从 Android 转到微信小程序的思考