@@ -8,31 +8,34 @@ package log
8
8
import (
9
9
"fmt"
10
10
"os"
11
+ "time"
11
12
12
13
"github.com/go-kit/kit/log"
13
14
"github.com/go-kit/kit/log/level"
14
- "github.com/prometheus/common/promlog"
15
15
)
16
16
17
17
var (
18
18
// Application wide logger
19
19
logger log.Logger
20
+
21
+ // logger timestamp format
22
+ timestampFormat = log .TimestampFormat (
23
+ func () time.Time { return time .Now ().UTC () },
24
+ "2006-01-02T15:04:05.000Z07:00" ,
25
+ )
20
26
)
21
27
22
28
// Init starts logging given the minimum log level
23
29
func Init (logLevel string ) error {
24
- allowedLevel := promlog.AllowedLevel {}
25
- err := allowedLevel .Set (logLevel )
30
+ var l log.Logger
31
+ l = log .NewJSONLogger (log .NewSyncWriter (os .Stderr ))
32
+ logLevelOption , err := parseLogLevel (logLevel )
26
33
if err != nil {
27
34
return err
28
35
}
29
36
30
- config := promlog.Config {
31
- Level : & allowedLevel ,
32
- Format : & promlog.AllowedFormat {},
33
- }
34
-
35
- logger = promlog .New (& config )
37
+ l = level .NewFilter (l , logLevelOption )
38
+ logger = log .With (l , "ts" , timestampFormat , "caller" , log .Caller (4 ))
36
39
return nil
37
40
}
38
41
@@ -71,3 +74,18 @@ type CustomCacheLogger struct{}
71
74
func (c * CustomCacheLogger ) Printf (format string , v ... interface {}) {
72
75
_ = level .Debug (logger ).Log ("msg" , fmt .Sprintf (format , v ... ))
73
76
}
77
+
78
+ func parseLogLevel (logLevel string ) (level.Option , error ) {
79
+ switch logLevel {
80
+ case "debug" :
81
+ return level .AllowDebug (), nil
82
+ case "info" :
83
+ return level .AllowInfo (), nil
84
+ case "warn" :
85
+ return level .AllowWarn (), nil
86
+ case "error" :
87
+ return level .AllowError (), nil
88
+ default :
89
+ return nil , fmt .Errorf ("unrecognized log level %q" , logLevel )
90
+ }
91
+ }
0 commit comments