Skip to content

Commit 48f3d01

Browse files
author
mobus
committed
update log impl to zerolog
1 parent 7d31147 commit 48f3d01

File tree

4 files changed

+84
-183
lines changed

4 files changed

+84
-183
lines changed

examples/log/log_ex.go

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,12 @@
11
package main
22

33
import (
4-
"fmt"
5-
64
"github.com/sunvim/utils/log"
75
)
86

97
func main() {
10-
log.SetPrefix("Example")
11-
12-
fmt.Println("debug level")
13-
log.SetLevel(log.LevelDebug)
14-
log.Debug("hello debug")
15-
log.Info("hello info")
16-
log.Error("hello error")
17-
18-
fmt.Println("info level")
19-
log.SetLevel(log.LevelInfo)
20-
log.Debug("hello debug")
21-
log.Info("hello info")
22-
log.Error("hello error")
8+
logger := log.NewLogger()
239

24-
fmt.Println("error level")
25-
log.SetLevel(log.LevelError)
26-
log.Debug("hello debug")
27-
log.Info("hello info")
28-
log.Error("hello error")
10+
logger.Info().Str("hello", "world").Msg("main")
2911

3012
}

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ require (
1010
github.com/hslam/splice v1.0.3
1111
github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c
1212
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475
13+
github.com/rs/zerolog v1.26.1
1314
github.com/stretchr/testify v1.7.0
1415
gopkg.in/eapache/queue.v1 v1.1.0
1516
)

go.sum

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
12
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
23
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
34
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
45
github.com/go-git/go-billy/v5 v5.3.1 h1:CPiOUAzKtMRvolEKw+bG1PLRpT7D3LIs3/3ey4Aiu34=
56
github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0=
7+
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
68
github.com/hslam/buffer v0.0.0-20211027181515-93d623f7e213 h1:0jr8x0IYeDlcIbFTlq9MigsrlOCtqaI1xM+4UotacG4=
79
github.com/hslam/buffer v0.0.0-20211027181515-93d623f7e213/go.mod h1:Gvbj40hnzR54zoUOuDZqDi7aziar8UlkHXk6NVYLg2U=
810
github.com/hslam/mmap v1.0.0 h1:GSp55lZrPDhctob3yE0SqESBjzgCn9cP4iu4Pmmm+gE=
@@ -21,15 +23,45 @@ github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWb
2123
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
2224
github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw=
2325
github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0=
26+
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
2427
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
2528
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
2629
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
2730
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
31+
github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
32+
github.com/rs/zerolog v1.26.1 h1:/ihwxqH+4z8UxyI70wM1z9yCvkWcfz/a3mj48k/Zngc=
33+
github.com/rs/zerolog v1.26.1/go.mod h1:/wSSJWX7lVrsOwlbyTRSOJvqRlc+WjWlfes+CiJ+tmc=
2834
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
2935
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
3036
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
3137
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
38+
github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
39+
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
40+
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
41+
golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
42+
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
43+
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
44+
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
45+
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
46+
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
47+
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
48+
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
49+
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
50+
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
3251
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
52+
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
53+
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
54+
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
55+
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
56+
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
57+
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
58+
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
59+
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
60+
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
61+
golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
62+
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
63+
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
64+
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
3365
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
3466
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
3567
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

log/log.go

Lines changed: 49 additions & 163 deletions
Original file line numberDiff line numberDiff line change
@@ -15,180 +15,66 @@
1515
package log
1616

1717
import (
18-
stdlog "log"
1918
"os"
20-
)
21-
22-
// Logger is a generic logging interface
23-
type Logger interface {
24-
Log(v ...interface{})
25-
Logf(format string, v ...interface{})
26-
}
27-
28-
// Level is a log level
29-
type Level int
19+
"time"
3020

31-
const (
32-
// LevelFatal fatal level
33-
LevelFatal Level = iota + 1
34-
// LevelError error level
35-
LevelError
36-
// LevelInfo info level
37-
LevelInfo
38-
// LevelDebug debug level
39-
LevelDebug
21+
"github.com/rs/zerolog"
4022
)
4123

42-
func (l Level) String() string {
43-
switch l {
44-
default:
45-
return ""
46-
case LevelDebug:
47-
return "DBG"
48-
case LevelError:
49-
return "ERR"
50-
case LevelInfo:
51-
return "INF"
52-
case LevelFatal:
53-
return "FTL"
54-
}
55-
}
56-
57-
var (
58-
// the local logger
59-
logger Logger = &defaultLogLogger{}
24+
var _ zerolog.Logger
6025

61-
// default log level is info
62-
level = LevelInfo
26+
type Level int8
6327

64-
prefix = "Slog"
28+
const (
29+
// DebugLevel defines debug log level.
30+
DebugLevel Level = iota
31+
// InfoLevel defines info log level.
32+
InfoLevel
33+
// WarnLevel defines warn log level.
34+
WarnLevel
35+
// ErrorLevel defines error log level.
36+
ErrorLevel
37+
// FatalLevel defines fatal log level.
38+
FatalLevel
39+
// PanicLevel defines panic log level.
40+
PanicLevel
41+
// NoLevel defines an absent log level.
42+
NoLevel
43+
// Disabled disables the logger.
44+
Disabled
45+
46+
// TraceLevel defines trace log level.
47+
TraceLevel Level = -1
48+
// Values less than TraceLevel are handled as numbers.
6549
)
6650

67-
type defaultLogLogger struct{}
68-
69-
func (t *defaultLogLogger) Log(v ...interface{}) {
70-
stdlog.Print(v...)
71-
}
72-
73-
func (t *defaultLogLogger) Logf(format string, v ...interface{}) {
74-
stdlog.Printf(format, v...)
51+
func NewLogger() zerolog.Logger {
52+
output := zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: time.RFC3339}
53+
return zerolog.New(output).With().Timestamp().Logger()
7554
}
7655

77-
func init() {
78-
level = LevelType(os.Getenv("SLOG_LOG_LEVEL"))
79-
}
80-
81-
func LevelType(level string) Level {
82-
switch level {
56+
func SetLogLevel(l Level) {
57+
switch l {
8358
default:
84-
return LevelInfo
85-
case "debug":
86-
return LevelDebug
87-
case "info":
88-
return LevelInfo
89-
case "error":
90-
return LevelError
91-
case "fatal":
92-
return LevelFatal
93-
}
94-
}
95-
96-
// Log makes use of Logger
97-
func Log(v ...interface{}) {
98-
if len(prefix) > 0 {
99-
logger.Log(append([]interface{}{prefix, " "}, v...)...)
100-
return
101-
}
102-
logger.Log(v...)
103-
}
104-
105-
// Logf makes use of Logger
106-
func Logf(format string, v ...interface{}) {
107-
if len(prefix) > 0 {
108-
format = prefix + " " + format
109-
}
110-
logger.Logf(format, v...)
111-
}
112-
113-
// WithLevel logs with the level specified
114-
func WithLevel(l Level, v ...interface{}) {
115-
if l > level {
116-
return
117-
}
118-
Log(v...)
119-
}
120-
121-
// WithLevelf logs with the level specified
122-
func WithLevelf(l Level, format string, v ...interface{}) {
123-
if l > level {
124-
return
59+
zerolog.SetGlobalLevel(zerolog.InfoLevel)
60+
case DebugLevel:
61+
zerolog.SetGlobalLevel(zerolog.DebugLevel)
62+
case InfoLevel:
63+
zerolog.SetGlobalLevel(zerolog.InfoLevel)
64+
case WarnLevel:
65+
zerolog.SetGlobalLevel(zerolog.WarnLevel)
66+
case ErrorLevel:
67+
zerolog.SetGlobalLevel(zerolog.ErrorLevel)
68+
case FatalLevel:
69+
zerolog.SetGlobalLevel(zerolog.FatalLevel)
70+
case PanicLevel:
71+
zerolog.SetGlobalLevel(zerolog.PanicLevel)
72+
case NoLevel:
73+
zerolog.SetGlobalLevel(zerolog.NoLevel)
74+
case Disabled:
75+
zerolog.SetGlobalLevel(zerolog.Disabled)
76+
case TraceLevel:
77+
zerolog.SetGlobalLevel(zerolog.TraceLevel)
12578
}
126-
Logf(format, v...)
127-
}
128-
129-
// Debug provides debug level logging
130-
func Debug(v ...interface{}) {
131-
WithLevel(LevelDebug, v...)
132-
}
133-
134-
// Debugf provides debug level logging
135-
func Debugf(format string, v ...interface{}) {
136-
WithLevelf(LevelDebug, format, v...)
137-
}
138-
139-
// Info provides info level logging
140-
func Info(v ...interface{}) {
141-
WithLevel(LevelInfo, v...)
142-
}
143-
144-
// Infof provides info level logging
145-
func Infof(format string, v ...interface{}) {
146-
WithLevelf(LevelInfo, format, v...)
147-
}
148-
149-
// Error provides warn level logging
150-
func Error(v ...interface{}) {
151-
WithLevel(LevelError, v...)
152-
}
153-
154-
// Errorf provides warn level logging
155-
func Errorf(format string, v ...interface{}) {
156-
WithLevelf(LevelError, format, v...)
157-
}
158-
159-
// Fatal logs with Log and then exits with os.Exit(1)
160-
func Fatal(v ...interface{}) {
161-
WithLevel(LevelFatal, v...)
162-
os.Exit(1)
163-
}
164-
165-
// Fatalf logs with Logf and then exits with os.Exit(1)
166-
func Fatalf(format string, v ...interface{}) {
167-
WithLevelf(LevelFatal, format, v...)
168-
os.Exit(1)
169-
}
170-
171-
// SetLogger sets the local logger
172-
func SetLogger(l Logger) {
173-
logger = l
174-
}
175-
176-
// GetLogger returns the local logger
177-
func GetLogger() Logger {
178-
return logger
179-
}
180-
181-
// SetLevel sets the log level
182-
func SetLevel(l Level) {
183-
level = l
184-
}
185-
186-
// GetLevel returns the current level
187-
func GetLevel() Level {
188-
return level
189-
}
19079

191-
// SetPrefix sets a prefix for the logger
192-
func SetPrefix(p string) {
193-
prefix = p
19480
}

0 commit comments

Comments
 (0)