logger.go raw

   1  package logger
   2  
   3  import (
   4  	"os"
   5  	"path/filepath"
   6  	"strconv"
   7  
   8  	"github.com/orandin/lumberjackrus"
   9  	"github.com/sirupsen/logrus"
  10  )
  11  
  12  const (
  13  	logDir      = "log"
  14  	logFilename = "nwc.log"
  15  )
  16  
  17  var Logger *logrus.Logger
  18  var logFilePath string
  19  
  20  func Init(logLevel string) {
  21  	Logger = logrus.New()
  22  	Logger.SetFormatter(&logrus.JSONFormatter{})
  23  	Logger.SetOutput(os.Stdout)
  24  	logrusLogLevel, err := strconv.Atoi(logLevel)
  25  	if err != nil {
  26  		logrusLogLevel = int(logrus.InfoLevel)
  27  	}
  28  	Logger.SetLevel(logrus.Level(logrusLogLevel))
  29  	if logrusLogLevel >= int(logrus.DebugLevel) {
  30  		Logger.ReportCaller = true
  31  		Logger.Debug("Logrus report caller enabled in debug mode")
  32  	}
  33  }
  34  
  35  func AddFileLogger(workdir string) error {
  36  	logFilePath = filepath.Join(workdir, logDir, logFilename)
  37  	fileLoggerHook, err := lumberjackrus.NewHook(
  38  		&lumberjackrus.LogFile{
  39  			Filename:   logFilePath,
  40  			MaxAge:     3,
  41  			MaxBackups: 3,
  42  		},
  43  		logrus.InfoLevel,
  44  		&logrus.JSONFormatter{},
  45  		nil,
  46  	)
  47  	if err != nil {
  48  		return err
  49  	}
  50  	Logger.AddHook(fileLoggerHook)
  51  	return nil
  52  }
  53  
  54  func GetLogFilePath() string {
  55  	return logFilePath
  56  }
  57