package go_chat_api_util import ( "github.com/lestrrat-go/file-rotatelogs" "github.com/sirupsen/logrus" "io" "time" ) var log *logrus.Logger type RotateConfig struct { MaxAge time.Duration //最大时间 RotationTime time.Duration //分隔间隔 } type RotateOption func(config *RotateConfig) func WithMaxAge(age time.Duration) RotateOption { return func(q *RotateConfig) { q.MaxAge = age } } func WithRotationTime(roTime time.Duration) RotateOption { return func(config *RotateConfig) { config.RotationTime = roTime } } func NewLoggerByLogName(path string, options ...RotateOption) (*logrus.Logger, error) { co := &RotateConfig{MaxAge: 24 * 31 * 12 * time.Hour * 2, RotationTime: 7 * 24 * time.Hour} for _, v := range options { v(co) } writer, err := rotatelogs.New( path+"log%Y%m%d%H%M%S", rotatelogs.WithLinkName(path), rotatelogs.WithMaxAge(co.MaxAge), rotatelogs.WithRotationTime(co.RotationTime), ) if err != nil { return nil, err } return NewLogger(writer), err } func NewLogger(f io.Writer) *logrus.Logger { log = logrus.New() log.Formatter = &logrus.JSONFormatter{} //f, err := os.OpenFile("./log/log.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) //if err != nil { // panic("不能打开日志文件 " + err.Error()) //} customF := new(logrus.JSONFormatter) customF.TimestampFormat = "2006-01-02 15:04:05" log.SetFormatter(customF) log.SetLevel(logrus.DebugLevel) //log.Out = f log.Out = f return log }