日志处理和正则处理
1、logx日志处理
1.1、logx简介
logx 是 go-zero 框架中用于日志记录的核心包,具有以下特点:
- 统一日志格式(带时间、级别、调用栈)
- 自动日志切割
- 支持多种日志输出模式(控制台、文件、volume)
- 支持链路追踪(context 支持)
- 支持日志等级控制(debug/info/error/alert)
- 内建 panic 捕获机制,防止程序崩溃
type LogConf struct {
ServiceName string `json:",optional"`
Mode string `json:",default=console,options=[console,file,volume]"`
Encoding string `json:",default=json,options=[json,plain]"`
TimeFormat string `json:",optional"`
Path string `json:",default=logs"`
Level string `json:",default=info,options=[info,error,severe]"`
Compress bool `json:",optional"`
KeepDays int `json:",optional"`
StackCooldownMillis int `json:",default=100"`
MaxBackups int `json:",default=0"`
MaxSize int `json:",default=0"`
Rotation string `json:",default=daily,options=[daily,size]"`
}
ServiceName:设置服务名称,可选。在volume模式下,该名称用于生成日志文件。在rest/zrpc服务中,名称将被自动设置为rest或zrpc的名称。Mode:输出日志的模式,默认是consoleconsole模式将日志写到stdout/stderrfile模式将日志写到Path指定目录的文件中volume模式在docker中使用,将日志写入挂载的卷中Encoding: 指示如何对日志进行编码,默认是jsonjson模式以json格式写日志plain模式用纯文本写日志,并带有终端颜色显示TimeFormat:自定义时间格式,可选。默认是2006-01-02T15:04:05.000Z07:00Path:设置日志路径,默认为logsLevel: 用于过滤日志的日志级别。默认为infoinfo,所有日志都被写入error, info的日志被丢弃severe,info和error日志被丢弃,只有severe日志被写入
Compress: 是否压缩日志文件,只在file模式下工作KeepDays:日志文件被保留多少天,在给定的天数之后,过期的文件将被自动删除。对console模式没有影响tackCooldownMillis:多少毫秒后再次写入堆栈跟踪。用来避免堆栈跟踪日志过多MaxBackups: 多少个日志文件备份将被保存。0代表所有备份都被保存。当Rotation被设置为size时才会起作用。注意:KeepDays选项的优先级会比MaxBackups高,即使MaxBackups被设置为0,当达到KeepDays上限时备份文件同样会被删除。MaxSize: 当前被写入的日志文件最大可占用多少空间。0代表没有上限。单位为MB。当Rotation被设置为size时才会起作用。Rotation: 日志轮转策略类型。默认为daily(按天轮转)。daily按天轮转。size按日志大小轮转。
方法介绍:
Error, Info, Slow: 将任何类型的信息写进日志,使用fmt.Sprint(...)来转换为stringErrorf, Infof, Slowf: 将指定格式的信息写入日志Errorv, Infov, Slowv: 将任何类型的信息写入日志,用json marshal编码Errorw, Infow, Sloww: 写日志,并带上给定的key:value字段WithContext:将给定的 ctx 注入日志信息,例如用于记录trace-id和span-idWithDuration: 将指定的时间写入日志信息中,字段名为duration
logx快速使用示例:
package main
import "github.com/zeromicro/go-zero/core/logx"
func main() {
logx.Info("服务启动...")
logx.Errorf("出现错误: %v", "连接失败")
}

注意:如果不现实设置,默认采用console模式,输出到控制台。
1.2、日志初始化与配置
package main
import "github.com/zeromicro/go-zero/core/logx"
func main() {
logx.MustSetup(logx.LogConf{
ServiceName: "user-api",
Mode: "file",
Path: "./lo

最低0.47元/天 解锁文章
763





