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 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
|
}
|