You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.7 KiB
78 lines
1.7 KiB
package logger
|
|
|
|
import (
|
|
"fmt"
|
|
rotatelogs "github.com/lestrrat-go/file-rotatelogs"
|
|
"github.com/rifflock/lfshook"
|
|
"github.com/sirupsen/logrus"
|
|
"path"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
// 定义自己的Writer
|
|
type RdsLoggerWriter struct {
|
|
logger *logrus.Logger
|
|
}
|
|
|
|
// 实现gorm/logger.Writer接口
|
|
func (r *RdsLoggerWriter) Printf(format string, v ...interface{}) {
|
|
r.logger.Info(fmt.Sprintf(format, v...))
|
|
}
|
|
|
|
type RdsLogFormatter struct{}
|
|
|
|
func (s *RdsLogFormatter) Format(entry *logrus.Entry) ([]byte, error) {
|
|
|
|
local, _ := time.LoadLocation("Asia/Shanghai")
|
|
timestamp := time.Now().In(local).Format("2006-01-02 15:04:05")
|
|
|
|
//fmt.Println(entry.Data)
|
|
msg := fmt.Sprintf(
|
|
"[GOID:%d] [%s] %s %s\n",
|
|
getGID(),
|
|
strings.ToUpper(entry.Level.String()),
|
|
timestamp,
|
|
entry.Message)
|
|
return []byte(msg), nil
|
|
}
|
|
|
|
func newRdsLoggerWriter(LogFilePath string, LogFileName string, LoggerInstance *logrus.Logger, RunMode string) *RdsLoggerWriter {
|
|
|
|
//配置logrus
|
|
|
|
fileName := path.Join(LogFilePath, LogFileName)
|
|
|
|
outSelect(LoggerInstance, RunMode)
|
|
|
|
logWriter, _ := rotatelogs.New(
|
|
// 分割后的文件名称
|
|
fileName+".%Y%m%d.log",
|
|
|
|
// 生成软链,指向最新日志文件
|
|
rotatelogs.WithLinkName(fileName),
|
|
|
|
// 设置最大保存时间(7天)
|
|
rotatelogs.WithMaxAge(7*24*time.Hour),
|
|
|
|
// 设置日志切割时间间隔(1天)
|
|
rotatelogs.WithRotationTime(24*time.Hour),
|
|
)
|
|
|
|
writeMap := lfshook.WriterMap{
|
|
logrus.InfoLevel: logWriter,
|
|
logrus.FatalLevel: logWriter,
|
|
logrus.DebugLevel: logWriter,
|
|
logrus.WarnLevel: logWriter,
|
|
logrus.ErrorLevel: logWriter,
|
|
logrus.PanicLevel: logWriter,
|
|
}
|
|
|
|
lfHook := lfshook.NewHook(writeMap, &RdsLogFormatter{})
|
|
|
|
// 新增 Hook
|
|
LoggerInstance.AddHook(lfHook)
|
|
|
|
return &RdsLoggerWriter{logger: LoggerInstance}
|
|
}
|