/
logger.go
90 lines (79 loc) · 1.89 KB
/
logger.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package cmd
import (
"errors"
rotatelogs "github.com/lestrrat-go/file-rotatelogs"
"github.com/sirupsen/logrus"
"path"
"time"
)
var log = logrus.New()
// 初始化日志
func initLogger() {
// 输出Json
useJSON := loggerConfig.UseJSON
if useJSON {
log.SetFormatter(&logrus.JSONFormatter{})
}
// 日志级别
level := loggerConfig.Level
setLogLevel(level)
//switch level {
//case "trace":
// log.SetLevel(logrus.TraceLevel)
//case "debug":
// log.SetLevel(logrus.DebugLevel)
//case "info":
// log.SetLevel(logrus.InfoLevel)
//case "warn":
// log.SetLevel(logrus.WarnLevel)
//case "error":
// log.SetLevel(logrus.ErrorLevel)
//}
log.WithFields(logrus.Fields{
"app": "chainstorage-cli",
})
// default
log.SetReportCaller(true)
// 输出日志文件
isOutPutFile := loggerConfig.IsOutPutFile
if isOutPutFile {
maxAgeDay := time.Duration(24 * loggerConfig.MaxAgeDay)
rotationTime := time.Duration(24 * loggerConfig.RotationTime)
logPath := loggerConfig.LogPath
loggerFile := loggerConfig.LoggerFile
linkName := path.Join(logPath, loggerFile)
logPattern := linkName + ".%Y%m%d"
logFile, err := rotatelogs.New(
logPattern,
//rotatelogs.WithLinkName(linkName),
rotatelogs.WithMaxAge(maxAgeDay*time.Hour),
rotatelogs.WithRotationTime(rotationTime*time.Hour),
)
if err != nil {
log.Printf("failed to create rotatelogs: %s", err)
return
}
log.SetOutput(logFile)
}
}
func setLogLevel(level string) error {
// 日志级别
switch level {
case "trace":
log.SetLevel(logrus.TraceLevel)
return nil
case "debug":
log.SetLevel(logrus.DebugLevel)
return nil
case "info":
log.SetLevel(logrus.InfoLevel)
return nil
case "warn":
log.SetLevel(logrus.WarnLevel)
return nil
case "error":
log.SetLevel(logrus.ErrorLevel)
return nil
}
return errors.New("supported level of log are: trace, debug, info, warn and error their lower-case forms")
}