/
logger.go
43 lines (36 loc) · 1.03 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
package logging
import (
"context"
"fmt"
"os"
"github.com/go-logr/logr"
"github.com/go-logr/zapr"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
func New(isDevelopment bool) logr.Logger {
var err error
var zapConfig zap.Config
// unless running with special envvar...
if isDevelopment {
zapConfig = zap.NewDevelopmentConfig()
} else {
zapConfig = zap.NewProductionConfig()
}
if _, ok := os.LookupEnv("VERBOSE"); ok {
zapConfig.Level = zap.NewAtomicLevelAt(zapcore.Level(-9))
}
zapLog, err := zapConfig.Build()
if err != nil {
panic(fmt.Sprintf("Failed to initialize zap logger: %v", err))
}
return zapr.NewLogger(zapLog)
}
// NewContext hydrates the provided context with the provided Logger
func NewContext(ctx context.Context, logger logr.Logger) context.Context {
return logr.NewContext(context.Background(), logger)
}
// FromContextOrDiscard provides a logger from the context or a logger that discards all messages
func FromContextOrDiscard(ctx context.Context) logr.Logger {
return logr.FromContextOrDiscard(ctx)
}