Skip to content

Commit cacb5e3

Browse files
committed
[ZAP] Implement new option interface and add caller
1 parent 95d9c8b commit cacb5e3

File tree

3 files changed

+53
-9
lines changed

3 files changed

+53
-9
lines changed

zap/adapter.go

Lines changed: 50 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,76 @@
11
package zapadapter
22

33
import (
4+
"runtime"
5+
46
"github.com/graphmetrics/logger-go"
7+
"github.com/graphmetrics/logger-go/options"
58
"go.uber.org/zap"
9+
"go.uber.org/zap/zapcore"
610
)
711

812
type zapAdapter struct {
9-
parent *zap.Logger
13+
parent *zap.Logger
14+
callerSkipOffset int
1015
}
1116

1217
func New(parent *zap.Logger) logger.Logger {
13-
return &zapAdapter{parent: parent}
18+
return &zapAdapter{parent: parent, callerSkipOffset: 0}
1419
}
1520

1621
func (z *zapAdapter) Debug(msg string, metadata map[string]interface{}) {
17-
z.parent.Debug(msg, prepareFields(metadata)...)
22+
if ce := z.parent.Check(zap.DebugLevel, msg); ce != nil {
23+
ce.Caller = z.caller()
24+
ce.Write(prepareFields(metadata)...)
25+
}
1826
}
1927

2028
func (z *zapAdapter) Info(msg string, metadata map[string]interface{}) {
21-
z.parent.Info(msg, prepareFields(metadata)...)
29+
if ce := z.parent.Check(zap.InfoLevel, msg); ce != nil {
30+
ce.Caller = z.caller()
31+
ce.Write(prepareFields(metadata)...)
32+
}
2233
}
2334

2435
func (z *zapAdapter) Warn(msg string, metadata map[string]interface{}) {
25-
z.parent.Warn(msg, prepareFields(metadata)...)
36+
if ce := z.parent.Check(zap.WarnLevel, msg); ce != nil {
37+
ce.Caller = z.caller()
38+
ce.Write(prepareFields(metadata)...)
39+
}
2640
}
2741

2842
func (z *zapAdapter) Error(msg string, metadata map[string]interface{}) {
29-
z.parent.Error(msg, prepareFields(metadata)...)
43+
if ce := z.parent.Check(zap.ErrorLevel, msg); ce != nil {
44+
ce.Caller = z.caller()
45+
ce.Write(prepareFields(metadata)...)
46+
}
47+
}
48+
49+
func (z *zapAdapter) WithOptions(opts ...options.LoggerOption) logger.Logger {
50+
adapter := z
51+
for _, o := range opts {
52+
switch o.Parameter() {
53+
case "CallerSkipOffset":
54+
adapter = &zapAdapter{
55+
parent: adapter.parent,
56+
callerSkipOffset: adapter.callerSkipOffset + o.Value().(int),
57+
}
58+
break
59+
case "Named":
60+
adapter = &zapAdapter{
61+
parent: adapter.parent.Named(o.Value().(string)),
62+
callerSkipOffset: adapter.callerSkipOffset,
63+
}
64+
break
65+
default:
66+
break
67+
}
68+
}
69+
return adapter
70+
}
71+
72+
func (z *zapAdapter) caller() zapcore.EntryCaller {
73+
return zapcore.NewEntryCaller(runtime.Caller(z.callerSkipOffset + 2))
3074
}
3175

3276
func prepareFields(metadata map[string]interface{}) []zap.Field {

zap/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ module github.com/graphmetrics/logger-go/zap
33
go 1.15
44

55
require (
6-
github.com/graphmetrics/logger-go v0.1.0
6+
github.com/graphmetrics/logger-go v0.2.0
77
go.uber.org/zap v1.16.0
88
)

zap/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
44
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
55
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
66
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
7-
github.com/graphmetrics/logger-go v0.1.0 h1:sLZzQBa1YLJofcaPtbzZRmvnqFhZSU7+qjKx22OWQSQ=
8-
github.com/graphmetrics/logger-go v0.1.0/go.mod h1:T98PXH1RF/nRghhhnKr8S7N96H5A7beuXXwzJaBl0dw=
7+
github.com/graphmetrics/logger-go v0.2.0 h1:vzxwoe3wtvXHqh7urQ4MYtrOjlwDGDxEOsmEy9NH+o8=
8+
github.com/graphmetrics/logger-go v0.2.0/go.mod h1:T98PXH1RF/nRghhhnKr8S7N96H5A7beuXXwzJaBl0dw=
99
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
1010
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
1111
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=

0 commit comments

Comments
 (0)