2.收付款方式默认配置的type为0,新增的type为1; 3.商品分类调整,如果父类被隐藏或显示,其子类也做对应修改; 4.新增商品资料入参调整,串码类型改为非必填; 5.新增商品资料调整,相同名称商品不允许新建; 6.零售订单审核优化,记录审核时间; 7.零售订单付款接口优化; 8.新增零售订单付款状态查询接口; 9.日志部分init时进行设置,避免test报错; 10.QueryTimeFormat格式调整,跟前端保持一致; 11.新增河马付相关密钥文件;
120 lines
2.4 KiB
Go
120 lines
2.4 KiB
Go
package logger
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"github.com/sirupsen/logrus"
|
|
"go-admin/tools/config"
|
|
"gopkg.in/natefinch/lumberjack.v2"
|
|
"path/filepath"
|
|
"time"
|
|
)
|
|
|
|
var l *Logx
|
|
|
|
var TraceIdKey = "trace_id"
|
|
|
|
type Logx struct {
|
|
*logrus.Logger
|
|
ctx *context.Context
|
|
}
|
|
|
|
type LogField struct {
|
|
Key string
|
|
Value interface{}
|
|
}
|
|
|
|
func init() {
|
|
Setup()
|
|
}
|
|
|
|
func Setup() {
|
|
ctx := context.Background()
|
|
l = &Logx{
|
|
Logger: logrus.New(),
|
|
ctx: &ctx,
|
|
}
|
|
|
|
// 设置json格式
|
|
l.SetFormatter(&logrus.JSONFormatter{TimestampFormat: "2006-01-02 15:04:05"})
|
|
|
|
// 设置最低loglevel
|
|
l.SetLevel(logrus.InfoLevel)
|
|
|
|
// 设置输出到文件
|
|
logFileName := getLogFileName()
|
|
fileLogger := &lumberjack.Logger{
|
|
Filename: logFileName,
|
|
MaxSize: 100, // 每个日志文件的最大尺寸,单位为 MB
|
|
MaxBackups: 5, // 保留旧日志文件的最大个数
|
|
MaxAge: 60, // 保留旧日志文件的最大天数
|
|
Compress: true, // 是否压缩旧日志文件
|
|
}
|
|
defer fileLogger.Close()
|
|
|
|
// 将日志同时输出到文件和控制台
|
|
//l.SetOutput(io.MultiWriter(os.Stdout, fileLogger))
|
|
l.SetOutput(fileLogger)
|
|
}
|
|
|
|
// 获取日志文件名,按照 server-2023-12-01.log 的格式
|
|
func getLogFileName() string {
|
|
currentTime := time.Now().Format("2006-01-02")
|
|
logFileName := fmt.Sprintf("server-%s.log", currentTime)
|
|
// 可以指定日志文件存储的路径
|
|
logFilePath := config.LoggerConfig.Path
|
|
return filepath.Join(logFilePath, logFileName)
|
|
}
|
|
|
|
func WithContext(ctx context.Context) {
|
|
l.ctx = &ctx
|
|
}
|
|
|
|
func Field(key string, value interface{}) *LogField {
|
|
return &LogField{Key: key, Value: value}
|
|
}
|
|
|
|
func Info(msg string, fields ...*LogField) {
|
|
e := newEntry(fields...)
|
|
e.Info(msg)
|
|
}
|
|
|
|
func Error(msg string, fields ...*LogField) {
|
|
e := newEntry(fields...)
|
|
e.Error(msg)
|
|
}
|
|
|
|
func Debug(msg string, fields ...*LogField) {
|
|
e := newEntry(fields...)
|
|
e.Debug(msg)
|
|
}
|
|
|
|
func Warning(msg string, fields ...*LogField) {
|
|
e := newEntry(fields...)
|
|
e.Warning(msg)
|
|
}
|
|
|
|
func newEntry(fields ...*LogField) *logrus.Entry {
|
|
e := logrus.NewEntry(l.Logger)
|
|
traceId, ok := (*l.ctx).Value(TraceIdKey).(string)
|
|
if ok {
|
|
e = e.WithField("trace_id", traceId)
|
|
}
|
|
for _, field := range fields {
|
|
e = e.WithField(field.Key, field.Value)
|
|
}
|
|
return e
|
|
}
|
|
|
|
func Errorf(format string, args ...interface{}) {
|
|
l.Errorf(format, args)
|
|
}
|
|
|
|
func Fatal(args ...interface{}) {
|
|
l.Fatal(args)
|
|
}
|
|
|
|
func Println(args ...interface{}) {
|
|
l.Println(args)
|
|
}
|