Skip to content

Commit 3c1f078

Browse files
committed
consider $LOG_FORMAT & $LOG_LEVEL when initializing loggers
1 parent a3bc7ba commit 3c1f078

File tree

2 files changed

+37
-9
lines changed

2 files changed

+37
-9
lines changed

logger.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,13 @@ func New(name string, opts ...Option) (*Logger, error) {
100100
// Logs info and debug to stdout
101101
outWriter := zapcore.Lock(os.Stdout)
102102
outLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
103-
return lvl < zapcore.WarnLevel
103+
return lvl >= o.Level && lvl < zapcore.WarnLevel
104104
})
105105

106106
// Logs warning and errors to stderr
107107
errWriter := zapcore.Lock(os.Stderr)
108108
errLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
109-
return lvl >= zapcore.WarnLevel
109+
return lvl >= o.Level && lvl >= zapcore.WarnLevel
110110
})
111111

112112
// Create zap.Logger

options.go

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,47 @@ package logging
22

33
import (
44
"encoding/json"
5+
"os"
56

67
"github.com/pkg/errors"
8+
"go.uber.org/zap/zapcore"
79
)
810

911
type options struct {
10-
Format string `json:"format"`
11-
TraceHeader string `json:"traceHeader"`
12-
LogRequests bool `json:"logRequests"`
13-
LogResponses bool `json:"logResponses"`
14-
TimeFormat string `json:"timeFormat"`
15-
CallerSkip int `json:"callerSkip"`
12+
Format string `json:"format"`
13+
Level zapcore.Level `json:"level"`
14+
TraceHeader string `json:"traceHeader"`
15+
LogRequests bool `json:"logRequests"`
16+
LogResponses bool `json:"logResponses"`
17+
TimeFormat string `json:"timeFormat"`
18+
CallerSkip int `json:"callerSkip"`
1619
}
1720

1821
func defaultOptions() *options {
1922
return &options{
20-
Format: "json",
23+
Format: formatFromEnv(),
24+
Level: levelFromEnv(),
2125
TraceHeader: DefaultTraceHeader,
2226
CallerSkip: 1,
2327
}
2428
}
2529

30+
func formatFromEnv() (format string) {
31+
if format = os.Getenv("LOG_FORMAT"); format == "" {
32+
format = "json"
33+
}
34+
return
35+
}
36+
37+
func levelFromEnv() (level zapcore.Level) {
38+
v := os.Getenv("LOG_LEVEL")
39+
if err := level.UnmarshalText([]byte(v)); err != nil {
40+
level = zapcore.InfoLevel
41+
}
42+
43+
return
44+
}
45+
2646
func (o *options) apply(opts []Option) (err error) {
2747
for _, fn := range opts {
2848
if err = fn(o); err != nil {
@@ -101,3 +121,11 @@ func WithCallerSkip(skip int) Option {
101121
return nil
102122
}
103123
}
124+
125+
// WithLogLevel sets the verbosity of the logger.
126+
func WithLogLevel(level zapcore.Level) Option {
127+
return func(o *options) error {
128+
o.Level = level
129+
return nil
130+
}
131+
}

0 commit comments

Comments
 (0)