From 056c5fa57a797d4d2fb485365f9508154db1c73f Mon Sep 17 00:00:00 2001 From: henry Date: Mon, 31 Aug 2020 15:41:56 +0800 Subject: [PATCH] docs(add a test file): - add an example about the processing of logs - if use lfshook.NewHook SetFormatter{}, the log will appears twice. --- lfshookLogrus_test.go | 49 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 lfshookLogrus_test.go 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 +}