/
logger.go
54 lines (41 loc) · 1.01 KB
/
logger.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
package utils
import (
"net/http"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
lumberjack "gopkg.in/natefinch/lumberjack.v2"
)
// Logger instance
var Logger *zap.Logger
// SetupLogger initialize a zap logger instance.
func SetupLogger(l *lumberjack.Logger) *zap.Logger {
if !l.Compress {
l.Compress = true
}
w := zapcore.AddSync(l)
core := zapcore.NewCore(
zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig()),
w,
zap.InfoLevel,
)
Logger = zap.New(core)
return Logger
}
// Info logs request info with pre-defined fields.
func Info(r *http.Request, s string) {
fields := []zapcore.Field{
zap.String("remote", r.RemoteAddr),
zap.String("request", r.RequestURI),
zap.String("method", r.Method),
}
Logger.Info(s, fields...)
}
// Error logs error with pre-defined fields.
func Error(r *http.Request, err error) {
fields := []zapcore.Field{
zap.String("remote", r.RemoteAddr),
zap.String("request", r.RequestURI),
zap.String("method", r.Method),
}
Logger.Error(err.Error(), fields...)
}