@@ -2,35 +2,47 @@ package batchspanprocessor // import "github.com/hypertrace/goagent/instrumentat
2
2
3
3
// Adapted from go.opentelemetry.io/otel/internal/global#internal_logging.go
4
4
import (
5
- "log"
6
- "os"
7
-
8
5
"github.com/go-logr/logr"
9
- "github.com/go-logr/stdr"
6
+ "github.com/go-logr/zapr"
7
+ "go.uber.org/zap"
8
+ "sync"
10
9
)
11
10
12
11
// The logger uses stdr which is backed by the standard `log.Logger`
13
12
// interface. This logger will only show messages at the Error Level.
14
- var logger logr.Logger = stdr .New (log .New (os .Stderr , "" , log .LstdFlags | log .Lshortfile ))
13
+ var (
14
+ logger logr.Logger
15
+ once sync.Once
16
+ )
15
17
16
18
// Info prints messages about the general state of the API or SDK.
17
19
// This should usually be less then 5 messages a minute.
18
20
func Info (msg string , keysAndValues ... interface {}) {
19
- logger .V (4 ).Info (msg , keysAndValues ... )
21
+ getLogger () .V (4 ).Info (msg , keysAndValues ... )
20
22
}
21
23
22
24
// Error prints messages about exceptional states of the API or SDK.
23
25
func Error (err error , msg string , keysAndValues ... interface {}) {
24
- logger .Error (err , msg , keysAndValues ... )
26
+ getLogger () .Error (err , msg , keysAndValues ... )
25
27
}
26
28
27
29
// Debug prints messages about all internal changes in the API or SDK.
28
30
func Debug (msg string , keysAndValues ... interface {}) {
29
- logger .V (8 ).Info (msg , keysAndValues ... )
31
+ getLogger () .V (8 ).Info (msg , keysAndValues ... )
30
32
}
31
33
32
34
// Warn prints messages about warnings in the API or SDK.
33
35
// Not an error but is likely more important than an informational event.
34
36
func Warn (msg string , keysAndValues ... interface {}) {
35
- logger .V (1 ).Info (msg , keysAndValues ... )
37
+ getLogger ().V (1 ).Info (msg , keysAndValues ... )
38
+ }
39
+
40
+ // since global variables init happens on package imports,
41
+ // the zap global logger might not be set by then
42
+ // hence doing a lazy initialization
43
+ func getLogger () logr.Logger {
44
+ once .Do (func () {
45
+ logger = zapr .NewLogger (zap .L ())
46
+ })
47
+ return logger
36
48
}
0 commit comments