package log import ( "io/ioutil" "time" rotatelogs "github.com/lestrrat-go/file-rotatelogs" "github.com/rifflock/lfshook" "github.com/sirupsen/logrus" ) var Log *logrus.Logger func init() { Log = NewLogger() Log.SetLevel(logrus.ErrorLevel) } func SetLogLevel(level string){ if level == "ErrorLevel" { Log.SetLevel(logrus.ErrorLevel) } else if level == "InfoLevel" { Log.SetLevel(logrus.InfoLevel) } else { Log.SetLevel(logrus.InfoLevel) } } func NewLogger() *logrus.Logger { if Log != nil { return Log } infopath := "logs/info.log" infowriter, _ := rotatelogs.New( infopath+".%Y%m%d%H%M", rotatelogs.WithLinkName(infopath), rotatelogs.WithMaxAge(30*24*time.Hour), rotatelogs.WithRotationTime(24*time.Hour), ) errorpath := "logs/error.log" errorwriter, _ := rotatelogs.New( errorpath+".%Y%m%d%H%M", rotatelogs.WithLinkName(errorpath), rotatelogs.WithMaxAge(30*24*time.Hour), rotatelogs.WithRotationTime(24*time.Hour), ) Log = logrus.New() Log.SetOutput(ioutil.Discard) Log.Hooks.Add(lfshook.NewHook( lfshook.WriterMap{ logrus.InfoLevel: infowriter, logrus.ErrorLevel: errorwriter, }, &logrus.JSONFormatter{}, )) return Log }