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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package logger
import (
"fmt"
"os"
"path"
"strings"
"github.com/sirupsen/logrus"
"github.com/jumpserver/koko/pkg/common"
"github.com/jumpserver/koko/pkg/config"
)
var logger = logrus.New()
var logLevels = map[string]logrus.Level{
"DEBUG": logrus.DebugLevel,
"INFO": logrus.InfoLevel,
"WARN": logrus.WarnLevel,
"ERROR": logrus.ErrorLevel,
}
func Initial() {
formatter := &Formatter{
LogFormat: "%time% [%lvl%] %msg%",
TimestampFormat: "2006-01-02 15:04:05",
}
conf := config.GetConf()
level, ok := logLevels[strings.ToUpper(conf.LogLevel)]
if !ok {
level = logrus.InfoLevel
}
// Output to stdout instead of the default stderr
// Can be any io.Writer, see below for File example
logger.SetFormatter(formatter)
logger.SetOutput(os.Stdout)
logger.SetLevel(level)
// Output to file
logFilePath := path.Join(conf.RootPath, "logs", "koko.log")
logDirPath := path.Dir(logFilePath)
if common.FileExists(logDirPath) {
err := os.MkdirAll(logDirPath, os.ModePerm)
if err != nil {
fmt.Printf("Create log dir %s error: %s\n", logDirPath, err)
return
}
}
rotateFileHook, err := NewRotateFileHook(RotateFileConfig{
Filename: logFilePath,
MaxSize: 50,
MaxBackups: 7,
MaxAge: 7,
LocalTime: true,
Level: level,
Formatter: formatter,
})
if err != nil {
fmt.Printf("Create log rotate hook error: %s\n", err)
return
}
logger.AddHook(rotateFileHook)
}
func Debug(args ...interface{}) {
logger.Debug(args...)
}
func Debugf(format string, args ...interface{}) {
logger.Debugf(format, args...)
}
func Info(args ...interface{}) {
logger.Info(args...)
}
func Infof(format string, args ...interface{}) {
logger.Infof(format, args...)
}
func Warn(args ...interface{}) {
logger.Warn(args...)
}
func Warnf(format string, args ...interface{}) {
logger.Warnf(format, args...)
}
func Error(args ...interface{}) {
logger.Error(args...)
}
func Errorf(format string, args ...interface{}) {
logger.Errorf(format, args...)
}
func Panic(args ...interface{}) {
logrus.Panic(args...)
}
func Fatal(args ...interface{}) {
logrus.Fatal(args...)
}