loghelper.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package model
  2. import (
  3. rotatelogs "github.com/lestrrat-go/file-rotatelogs"
  4. "github.com/sirupsen/logrus"
  5. easy "github.com/t-tomalak/logrus-easy-formatter"
  6. "io"
  7. "os"
  8. "path"
  9. "time"
  10. )
  11. func NewLogHelper(appName string, level logrus.Level, maxAge time.Duration, rotationTime time.Duration) *logrus.Logger {
  12. Logger := &logrus.Logger{
  13. // Out: os.Stderr,
  14. // Level: logrus.DebugLevel,
  15. Formatter: &easy.Formatter{
  16. TimestampFormat: "2006-01-02 15:04:05",
  17. LogFormat: "[%lvl%]: %time% - %msg%\n",
  18. },
  19. }
  20. nowpath, err := os.Getwd()
  21. if err != nil {
  22. panic(err)
  23. }
  24. pathRoot := path.Join(nowpath, "Logs")
  25. fileAbsPath := path.Join(pathRoot, appName+".log")
  26. // 下面配置日志每隔 X 分钟轮转一个新文件,保留最近 X 分钟的日志文件,多余的自动清理掉。
  27. writer, _ := rotatelogs.New(
  28. path.Join(pathRoot, appName+"--%Y%m%d%H%M--.log"),
  29. rotatelogs.WithLinkName(fileAbsPath),
  30. rotatelogs.WithMaxAge(maxAge),
  31. rotatelogs.WithRotationTime(rotationTime),
  32. )
  33. Logger.SetLevel(level)
  34. Logger.SetOutput(io.MultiWriter(os.Stderr, writer))
  35. return Logger
  36. }
  37. func GetLogger() *logrus.Logger {
  38. if logger == nil {
  39. logger = NewLogHelper("ChineseSubFinder", logrus.DebugLevel, time.Duration(7*24)*time.Hour, time.Duration(24)*time.Hour)
  40. }
  41. return logger
  42. }
  43. var logger *logrus.Logger