Contents

golang-go-zero-教程-Log

go-zero官网

go-zero详细文档

本系列为作者跟着Mikaelemmmm的b站教学视频学习时做的笔记

配置

etc/yaml里面配置Log

1
2
Log:
  选项:值

internal/config/config.go添加Logx.LogConf字段

1
2
3
4
type Config struct {
	...
	Log   logx.LogConf
}

zero-looklook将日志打印到console、file。然后使用filebeat将内容发送到kafka,go-stash(go-stash比log-stash开销更低效率更高,万总的项目)消费kafka中的日志并存入elasticsearch中,最后使用kibana来查看日志

常见配置项

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
//打印前缀
ServiceName         string `json:",optional"`
//模式,打印到控制台,文件或k8s的volume
Mode                string `json:",default=console,options=[console,file,volume]"`
//json将全部放一行(上线项目一般使用),plain将日志和java一样一行一行存(开发过程中使用方便查看)
Encoding            string `json:",default=json,options=[json,plain]"`
//针对file模式设置输出文件
Path                string `json:",default=logs"`
//记录日志最低等级,从低到高
Level               string `json:",default=info,options=[debug,info,error,severe]"`
//保存几天的日志自动生成日志压缩文件
Compress            bool   `json:",optional"`
//保留几天日志
KeepDays            int    `json:",optional"`

日志堆栈处理的时候需要使用github.com/pkg/errors第三方库,这个并不是标准errors库

errors.Wrap(errors.New(string),string)来返回一个堆栈错误信息,将返回的err通过logx.Errorf(“err:%+v”, err)打印出来

日志等级

info能输出一般的所有的日志

stat每隔一段时间记录CPU和服务状态,原理是每启动一个服务都会自动启动一个goroutine来监控自己

stat禁用在main中调用

1
logx.DisableStat()
 |