1
+ package logger
2
+
3
+ import (
4
+ "encoding/json"
5
+ "go.uber.org/zap"
6
+ "log"
7
+ "os"
8
+ )
9
+
10
+ var (
11
+ envLog = os .Getenv ("OPCAP_LOG_LEVEL" )
12
+ cfg zap.Config
13
+ )
14
+
15
+ type LogJSON struct {
16
+ Level string `json:"level"`
17
+ Encoding string `json:"encoding"`
18
+ OutputPaths []string `json:"outputPaths"`
19
+ EncoderConfig * EncoderCfg `json:"encoderConfig"`
20
+ }
21
+
22
+ type EncoderCfg struct {
23
+ MessageKey string `json:"messageKey"`
24
+ LevelKey string `json:"levelKey"`
25
+ LevelEncoder string `json:"levelEncoder"`
26
+ }
27
+
28
+ var logger * zap.Logger
29
+ var sugarLogger * zap.SugaredLogger
30
+
31
+ func InitLogger () /* *zap.SugaredLogger */ {
32
+ data := & LogJSON {
33
+ Level : envLog ,
34
+ Encoding : "json" ,
35
+ OutputPaths : []string {"stdout" },
36
+ EncoderConfig : & EncoderCfg {
37
+ MessageKey : "message" ,
38
+ LevelKey : "level" ,
39
+ LevelEncoder : "lowercase" ,
40
+ },
41
+ }
42
+ dataJSON , err := json .Marshal (data )
43
+ if err != nil {
44
+ log .Fatalf ("failed to build zap logger: %v" , err )
45
+ }
46
+
47
+ if err := json .Unmarshal ([]byte (dataJSON ), & cfg ); err != nil {
48
+ panic (err )
49
+ }
50
+ logger , err = cfg .Build ()
51
+ if err != nil {
52
+ panic (err )
53
+ }
54
+ sugarLogger = logger .Sugar ()
55
+ }
56
+
57
+ func Info (message string , fields ... interface {}) {
58
+ sugarLogger .Info (message , fields )
59
+ }
60
+ func Debug (message string , fields ... interface {}) {
61
+ sugarLogger .Debug (message , fields )
62
+ }
63
+ func Error (message string , fields ... interface {}) {
64
+ sugarLogger .Error (message , fields )
65
+ }
66
+ func Fatal (message string , fields ... interface {}) {
67
+ sugarLogger .Fatal (message , fields )
68
+ }
69
+ func Panic (message string , fields ... interface {}) {
70
+ sugarLogger .Panic (message , fields )
71
+ }
0 commit comments