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