diff --git a/lfshookLogrus_test.go b/lfshookLogrus_test.go new file mode 100644 index 0000000..b010f82 --- /dev/null +++ b/lfshookLogrus_test.go @@ -0,0 +1,49 @@ +/** +* @Author : henry +* @Data: 2020-08-31 15:20 +* @Note: a example about rotatelogs logrus rotatelogs +**/ + +package lfshook + +import ( + "fmt" + rotatelogs "github.com/lestrrat-go/file-rotatelogs" + "github.com/sirupsen/logrus" + "runtime" + "time" +) + +var Log *logrus.Logger + +func NewLogger() *logrus.Logger { + if Log != nil { + return Log + } + + path := "/var/log/go.log" + writer, _ := rotatelogs.New( + path+".%Y%m%d%H%M", + rotatelogs.WithLinkName(path), + rotatelogs.WithMaxAge(time.Duration(86400)*time.Second), + rotatelogs.WithRotationTime(time.Duration(604800)*time.Second), + ) + + pathMap := logrus.Hook(lfshook.NewHook( + lfshook.WriterMap{ + logrus.InfoLevel: writer, + logrus.ErrorLevel: writer, + }, + nil, + )) + + Log = logrus.New() + Log.Hooks.Add(pathMap) + Logger.SetFormatter(&logrus.JSONFormatter{ + CallerPrettyfier: func(f *runtime.Frame) (string, string) { + return fmt.Sprintf("%s()", f.Function), fmt.Sprintf("%s:%d", f.File, f.Line) + }, + }) + + return Log +}