| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package log
- import (
- "github.com/lestrrat-go/file-rotatelogs"
- "github.com/rifflock/lfshook"
- "github.com/sirupsen/logrus"
- "time"
- )
- var logLevels = map[logrus.Level]string{
- logrus.DebugLevel: "debug",
- logrus.InfoLevel: "info",
- logrus.WarnLevel: "warn",
- logrus.ErrorLevel: "error",
- }
- func NewRotateHook(l logrus.Level, path string, day uint, pass bool) logrus.Hook {
- var writerMap = lfshook.WriterMap{}
- if path == "" {
- path = "."
- }
- name := path + "/" + logLevels[l]
- writer, err := rotatelogs.New(
- name+"_%Y%m%d.log",
- rotatelogs.WithLinkName(name+".log"),
- rotatelogs.WithRotationTime(time.Hour*24),
- rotatelogs.WithRotationCount(day),
- )
- if err != nil {
- logrus.Errorf("config local file system for logger error: %v", err)
- }
- for level := logrus.ErrorLevel; level <= logrus.DebugLevel; level++ {
- if level != l && (level > l || !pass) {
- continue
- }
- writerMap[level] = writer
- }
- rotateHook := lfshook.NewHook(writerMap, &LineFormatter{
- Skip: 13,
- })
- return rotateHook
- }
|