一 Zap日志介绍

  • Zap是在 Go 中实现超快、结构化、分级的日志记录。

  • Zap日志能够提供下面这些功能:

  1、能够将事件记录到文件中,也可以在应用控制台输出

  2、日志切割-可以根据文件大小,时间或间隔来切割日志文件

  3、支持不同的日志级别。例如 INFO、DEBUG、ERROR等

  4、能够打印基本信息,如调用文件/函数名和行号,日志时间等。

  • zap的基本配置

    • Zap提供了两种类型的日志记录器—Sugared Logger 和 Logger 。

      在性能很好但不是很关键的上下文中,使用 SugaredLogger 。它比其他结构化日志记录包快4-10倍,并且支持结构化和printf风格的日志记录。

      在每一微秒和每一次内存分配都很重要的上下文中,使用 Logger 。它甚至比 SugaredLogger 更快,内存分配次数也更少,但它只支持强类型的结构化日志记录。

二 Zap日志安装

go get -u go.uber.org/zap
go get -u go.uber.org/zapcore
go get -u gopkg.in/natefinch/lumberjack.v2
  • 使用lumberjack进行日志划分

三 Zap日志初始化

  • 在logger目录下新建zap.go文件
package logger

import (
"account/common/micro"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"gopkg.in/natefinch/lumberjack.v2"
) var (
logger *zap.SugaredLogger
) func Init() error {
syncWriter := zapcore.AddSync(
&lumberjack.Logger{
Filename: micro.ConsulInfo.Log.Filename, //文件名称
MaxSize: int(micro.ConsulInfo.Log.MaxSize), //MB
MaxAge: int(micro.ConsulInfo.Log.MaxAge),
MaxBackups: int(micro.ConsulInfo.Log.MaxBackips), //最大备份
LocalTime: true,
Compress: true, //是否启用压缩
})
//编码
encoder := zap.NewProductionEncoderConfig()
//时间格式
encoder.EncodeTime = zapcore.ISO8601TimeEncoder
core := zapcore.NewCore(
// 编码器
zapcore.NewJSONEncoder(encoder),
syncWriter,
//
zap.NewAtomicLevelAt(zap.DebugLevel))
log := zap.New(
core,
zap.AddCaller(),
zap.AddCallerSkip(1))
logger = log.Sugar()
return nil
}

四 Zap日志重写方法

  • 在zap.go写入以下代码:
func Debug(args ...interface{}) {
logger.Debug(args)
} func Debugf(template string, args ...interface{}) {
logger.Debugf(template, args...)
} func Info(args ...interface{}) {
logger.Info(args...)
} func Infof(template string, args ...interface{}) {
logger.Infof(template, args...)
} func Warn(args ...interface{}) {
logger.Warn(args...)
} func Warnf(template string, args ...interface{}) {
logger.Warnf(template, args...)
} func Error(args ...interface{}) {
logger.Error(args...)
} func Errorf(template string, args ...interface{}) {
logger.Errorf(template, args...)
} func DPanic(args ...interface{}) {
logger.DPanic(args...)
} func DPanicf(template string, args ...interface{}) {
logger.DPanicf(template, args...)
} func Panic(args ...interface{}) {
logger.Panic(args...)
} func Panicf(template string, args ...interface{}) {
logger.Panicf(template, args...)
} func Fatal(args ...interface{}) {
logger.Fatal(args...)
} func Fatalf(template string, args ...interface{}) {
logger.Fatalf(template, args...)
}

五 Zap日志使用

  • 在main.go文件写入以下代码完成初始化:
// 4.zap日志初始化
if err := logger.Init(); err != nil {
fmt.Printf("Init logger failed, err: %v\n", err)
return
}
defer zap.L().Sync()

使用logger进行日志记录,如:logger.Info()

六 最后

  • 至此,go-micro微服务zap日志配置开发工作就正式完成。

  • 接下来就开始Mysql配置的代码编写了,希望大家关注博主和关注专栏,第一时间获取最新内容,每篇博客都干货满满。

欢迎大家加入 夏沫の梦的学习交流群 进行学习交流经验,点击

(7)go-micro微服务zap日志配置的更多相关文章

  1. 微服务-springboot日志配置

    springboot 默认会加载classpath:logback-spring.xml文件. springProfile 中的name名字对应application-xx.properties 中的 ...

  2. spring cloud+dotnet core搭建微服务架构:配置中心(四)

    前言 我们项目中有很多需要配置的地方,最常见的就是各种服务URL地址,这些地址针对不同的运行环境还不一样,不管和打包还是部署都麻烦,需要非常的小心.一般配置都是存储到配置文件里面,不管多小的配置变动, ...

  3. spring cloud+dotnet core搭建微服务架构:配置中心续(五)

    前言 上一章最后讲了,更新配置以后需要重启客户端才能生效,这在实际的场景中是不可取的.由于目前Steeltoe配置的重载只能由客户端发起,没有实现处理程序侦听服务器更改事件,所以还没办法实现彻底实现这 ...

  4. .net core 微服务之日志落盘设计

    原文:.net core 微服务之日志落盘设计 目录 1.设计目标 2.日志流程 3.串联请求事务 3.1 请求ID 3.2 处理服务器.服务 3.3 处理接口名 3.4 日志的发生时间 3.5 接口 ...

  5. spring cloud+.net core搭建微服务架构:配置中心续(五)

    前言 上一章最后讲了,更新配置以后需要重启客户端才能生效,这在实际的场景中是不可取的.由于目前Steeltoe配置的重载只能由客户端发起,没有实现处理程序侦听服务器更改事件,所以还没办法实现彻底实现这 ...

  6. spring cloud+.net core搭建微服务架构:配置中心(四)

    前言 我们项目中有很多需要配置的地方,最常见的就是各种服务URL地址,这些地址针对不同的运行环境还不一样,不管和打包还是部署都麻烦,需要非常的小心.一般配置都是存储到配置文件里面,不管多小的配置变动, ...

  7. 微服务之springCloud-docker-feign配置(五)

    简介 上一节我们讨论了怎么用feign声明式调用cloud的生产者,这节我们讨论一下feign配置,通过编写配置类,我们可以自定义feign的日志级别,日志扫描目录,可以通过feign调用服务在eur ...

  8. go micro 微服务框架温习

    go mod edit -require="github.com/chromedp/chromedp@v0.1.0" @后面加上你需要的版本号.就可以 已经修改go.mod 里的依 ...

  9. .Net Core with 微服务 - Seq 日志聚合

    上一次我们介绍并演示了如果使用 Consul 做为我们微服务的注册中心,来实现服务的注册与发现.那么本次我们讲会演示如何做日志聚合.日志聚合比较常用的有 ELK 等,但是这次我想要介绍的是一款比较小众 ...

  10. 从 1.5 开始搭建一个微服务框架——日志追踪 traceId

    你好,我是悟空. 前言 最近在搭一个基础版的项目框架,基于 SpringCloud 微服务框架. 如果把 SpringCloud 这个框架当做 1,那么现在已经有的基础组件比如 swagger/log ...

随机推荐

  1. CQOI2015任务查询系统

    题目链接 主席树. 把区间的影响挂在左端点与右端点,建树时顺便对应的插入与删除. 维护一段值域区间的和与数字个数,查询时要注意与第k大的数相同的数可能有很多. 复杂度O(nlogn) #include ...

  2. 认识 Redis client-output-buffer-limit 参数与源码分析

    概述 Redis 的 client-output-buffer-limit 可以用来强制断开无法足够快从 redis 服务器端读取数据的客户端.保护机制规则如下: [hard limit] 大小限制, ...

  3. golang中的init初始化函数

    0.1.索引 https://waterflow.link/articles/1666090530880 1.概念 1.1.源文件里的代码执行顺序 init 函数是用于初始化应用程序状态的函数. 它不 ...

  4. Razor中RenderBoby的使用

    1. RenderBody 在Razor引擎中没有了"母版页",取而代之的是叫做"布局"的页面(_Layout.cshtml)放在了共享视图文件夹中.在这个页面 ...

  5. CentOS7虚拟机配置git仓库(配置虚拟机,网络,git仓库,windows端git访问)

    想要达成的目的:从windows使用git访问CentOS7服务器上搭建的git仓库 用到的软件: (1)VMware-workstation-full-15.5.0-14665864.exe (2) ...

  6. certutil做哈希校验并下载网络文件

    微软Win系统自带,不需要安装的工具,但它是CMD命令行工具,关于命令行工具的说明和使用请参考我以前的文章 Windows系统的命令行(CLI)介绍及入门使用说明 . 这个微软自带的命令行工具叫做 c ...

  7. CSP-S2022 游寄

    前言:最后确实寄了,因为疫情,都没考成. \(8.26\) 占坑. \(8.23\) 参加浴谷月赛初赛模拟,报的 \(S\) 组,只有 \(71\) 分. \(8.25\) \(AK\) 了同学出的比 ...

  8. 【RPC和Protobuf】之Protobuf环境配置及组合工作

    Protobuf定义:是一种数据描述语言,作为接口规范的描述语言,可作为设计安全的跨语言RPC接口的基础工具 一.Protobuf入门 作用:最终保证RPC接口规范和安全 最基本的数据单元:messa ...

  9. 20、求解从1到20000内的所有水仙花数:每位数字的n次方之和等于其本身,n是这个数的位数。

    /* 求解从1到20000内的所有水仙花数:每位数字的n次方之和等于其本身,n是这个数的位数. 共五位数,设置一个数组用来保存数字的每一位,数组的有效长度就是该数的位数.最后读取数组的每位数字来判断水 ...

  10. 秦皇岛2020CCPC补题

    秦皇岛2020CCPC A,E,F,G,I,K A. A Greeting from Qinhuangdao 知识点:简单题 复杂度:\(O(logn)\) #include<bits/stdc ...