(7)go-micro微服务zap日志配置

简介: (7)go-micro微服务zap日志配置

一 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配置的代码编写了,希望大家关注博主和关注专栏,第一时间获取最新内容,每篇博客都干货满满。
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
11月前
|
监控 算法 NoSQL
Go 微服务限流与熔断最佳实践:滑动窗口、令牌桶与自适应阈值
🌟蒋星熠Jaxonic:Go微服务限流熔断实践者。分享基于滑动窗口、令牌桶与自适应阈值的智能防护体系,助力高并发系统稳定运行。
1241 1
Go 微服务限流与熔断最佳实践:滑动窗口、令牌桶与自适应阈值
|
11月前
|
存储 监控 算法
防止员工泄密软件中文件访问日志管理的 Go 语言 B + 树算法
B+树凭借高效范围查询与稳定插入删除性能,为防止员工泄密软件提供高响应、可追溯的日志管理方案,显著提升海量文件操作日志的存储与检索效率。
326 2
|
11月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
740 4
|
11月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
949 0
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `<appender>` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `<logger>` 和 `<root>` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
3360 1
|
Prometheus 监控 Java
日志收集和Spring 微服务监控的最佳实践
在微服务架构中,日志记录与监控对系统稳定性、问题排查和性能优化至关重要。本文介绍了在 Spring 微服务中实现高效日志记录与监控的最佳实践,涵盖日志级别选择、结构化日志、集中记录、服务ID跟踪、上下文信息添加、日志轮转,以及使用 Spring Boot Actuator、Micrometer、Prometheus、Grafana、ELK 堆栈等工具进行监控与可视化。通过这些方法,可提升系统的可观测性与运维效率。
999 1
日志收集和Spring 微服务监控的最佳实践
|
Java 微服务 Spring
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录——使用Logger在项目中打印日志
本文介绍了如何在项目中使用Logger打印日志。通过SLF4J和Logback,可设置不同日志级别(如DEBUG、INFO、WARN、ERROR)并支持占位符输出动态信息。示例代码展示了日志在控制器中的应用,说明了日志配置对问题排查的重要性。附课程源码下载链接供实践参考。
1541 0
|
SQL Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— application.yml 中对日志的配置
在 Spring Boot 项目中,`application.yml` 文件用于配置日志。通过 `logging.config` 指定日志配置文件(如 `logback.xml`),实现日志详细设置。`logging.level` 可定义包的日志输出级别,例如将 `com.itcodai.course03.dao` 包设为 `trace` 级别,便于开发时查看 SQL 操作。日志级别从高到低为 ERROR、WARN、INFO、DEBUG,生产环境建议调整为较高级别以减少日志量。本课程采用 yml 格式,因其层次清晰,但需注意格式要求。
1629 0
|
12月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1933 5
|
安全 BI 网络安全
EventLog Analyzer 如何满足等保合规要求?密码有效期、产品日志保留、配置备份三大核心问题全面解答
EventLog Analyzer(ELA)助力企业满足网络安全等级保护要求,支持配置自动/手动备份、日志180天留存及密码策略管理,提升合规性与安全运营效率。
408 0