/
helper.go
67 lines (56 loc) · 1.58 KB
/
helper.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
// Copyright 2023 The GitBundle Inc. All rights reserved.
// Copyright 2017 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package log
import (
golog "log"
"os"
"path"
"github.com/gitbundle/modules/json"
)
// mode can be console, file
func NewSimpleLogger(logBufferLength int64, mode, level, stacktraceLevel, logPath string, noCaller bool) {
lvl := INFO
if level != "" {
lvl = FromString(level)
}
stacktraceLvl := NONE
if stacktraceLevel != "" {
stacktraceLvl = FromString(stacktraceLevel)
}
logConfig := map[string]interface{}{
"level": lvl.String(),
"expression": "",
"prefix": "",
"flags": LstdFlags,
"stacktraceLevel": stacktraceLvl.String(),
}
// Generate log configuration.
switch mode {
case "console":
logConfig["stderr"] = true
logConfig["colorize"] = CanColorStderr
case "file":
if err := os.MkdirAll(path.Dir(logPath), os.ModePerm); err != nil {
panic(err.Error())
}
logConfig["filename"] = logPath
logConfig["rotate"] = true
logConfig["maxsize"] = 1 << 28
logConfig["daily"] = true
logConfig["maxdays"] = 7
logConfig["compress"] = true
logConfig["compressionLevel"] = -1
logConfig["colorize"] = false
}
byteConfig, err := json.Marshal(logConfig)
if err != nil {
panic(err)
}
NewLogger(logBufferLength, mode, mode, string(byteConfig), noCaller)
// Finally redirect the default golog to here
golog.SetFlags(0)
golog.SetPrefix("")
golog.SetOutput(NewLoggerAsWriter("INFO", GetLogger(DEFAULT)))
}