forked from galaxydi/go-loghub
-
Notifications
You must be signed in to change notification settings - Fork 110
/
logger.go
50 lines (47 loc) · 1.28 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
package producer
import (
"github.com/go-kit/kit/log"
"github.com/go-kit/kit/log/level"
"gopkg.in/natefinch/lumberjack.v2"
"os"
"io"
)
func logConfig(producerConfig *ProducerConfig) log.Logger {
var writer io.Writer
if producerConfig.LogFileName == "" {
writer = log.NewSyncWriter(os.Stdout)
} else {
if producerConfig.LogMaxSize == 0 {
producerConfig.LogMaxSize = 10
}
if producerConfig.LogMaxBackups == 0 {
producerConfig.LogMaxBackups = 10
}
writer = &lumberjack.Logger{
Filename: producerConfig.LogFileName,
MaxSize: producerConfig.LogMaxSize,
MaxBackups: producerConfig.LogMaxBackups,
Compress: producerConfig.LogCompress,
}
}
var logger log.Logger
if producerConfig.IsJsonType {
logger = log.NewJSONLogger(writer)
} else {
logger = log.NewLogfmtLogger(writer)
}
switch producerConfig.AllowLogLevel {
case "debug":
logger = level.NewFilter(logger, level.AllowDebug())
case "info":
logger = level.NewFilter(logger, level.AllowInfo())
case "warn":
logger = level.NewFilter(logger, level.AllowWarn())
case "error":
logger = level.NewFilter(logger, level.AllowError())
default:
logger = level.NewFilter(logger, level.AllowInfo())
}
logger = log.With(logger, "time", log.DefaultTimestampUTC, "caller", log.DefaultCaller)
return logger
}