logs.go 1.7 KB
package logs

import (
	"context"
	"github.com/gogf/gf/errors/gerror"
	"github.com/gogf/gf/frame/g"
)

type RequestLogReq struct {
	Path         string //存储路径
	RequestURI   string //请求URI
	RequestID    string //请求RequestID
	Method       string //请求方法
	Params       string //请求参数
	Response     string //响应参数
	Err          error  //错误信息
	ServerName   string //请求服务名称
	ResponseTime int64  //响应时间 毫秒级
}

const FormatErr = "参数【%v】错误【%v】响应时间【%v】"
const FormatSuc = "参数【%v】响应【%v】响应时间【%v】"

//统一请求日志
func RequestLog(req RequestLogReq) {

	Info(req.Path, "请求ID:【%v】 服务名称: 【%v】 请求路径:【%v】 请求方法: 【%v】 请求参数: 【%v】 响应参数: 【%v】 响应时间:【%v ms】error:【%v】",
		req.RequestID, req.ServerName, req.RequestURI, req.Method, req.Params, req.Response, req.ResponseTime, nil)

	if req.Err != nil {
		Error("%+v", gerror.Wrap(req.Err, req.RequestID))
	}

}

//记录info日志
func Info(path string, format string, v ...interface{}) {
	g.Log().Async().Cat(path).Infof(format, v...)
}

//记录error日志
func Error(format string, v ...interface{}) {
	g.Log().Async().Cat("error").Infof(format, v...)
}

//检查错误
func CheckErr(err error, extra string) bool {
	if err != nil {
		Error("%+v", gerror.Wrap(err, extra))
		return true
	}
	return false
}

func Infof(ctx context.Context, path string, format string, v ...interface{}) {
	g.Log().Ctx(ctx).Cat(path).Infof(format, v...)
}

func Errorf(ctx context.Context, format string, v ...interface{}) {
	g.Log().Ctx(ctx).Cat("error").Infof(format, v...)
}