Skip to content

Commit 5057ed8

Browse files
authored
feat: Support zerolog (#41)
* feat: Support zerolog * feat: Update README for zerolog usage
1 parent ef8077e commit 5057ed8

File tree

9 files changed

+990
-6
lines changed

9 files changed

+990
-6
lines changed

go.work

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use (
55
./logging/logrus
66
./logging/slog
77
./logging/zap
8+
./logging/zerolog
89
)
910

1011
replace github.com/apache/thrift => github.com/apache/thrift v0.13.0

go.work.sum

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -512,8 +512,8 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH
512512
github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
513513
github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k=
514514
github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
515+
github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=
515516
github.com/creack/pty v1.1.9 h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w=
516-
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
517517
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
518518
github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
519519
github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
@@ -532,6 +532,7 @@ github.com/go-fonts/stix v0.1.0 h1:UlZlgrvvmT/58o573ot7NFw0vZasZ5I6bcIft/oMdgg=
532532
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0=
533533
github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81 h1:6zl3BbBhdnMkpSj2YY30qV3gDcVBGtFgVsV3+/i+mKQ=
534534
github.com/go-pdf/fpdf v0.6.0 h1:MlgtGIfsdMEEQJr2le6b/HNr1ZlQwxyWr77r2aj2U/8=
535+
github.com/godbus/dbus/v5 v5.0.4 h1:9349emZab16e7zQvpmsbtjc18ykshndd8y2PG3sgJbA=
535536
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
536537
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=
537538
github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
@@ -568,19 +569,17 @@ github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5 h1:PJr+ZMXIecYc
568569
github.com/kisielk/errcheck v1.5.0 h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY=
569570
github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=
570571
github.com/knz/go-libedit v1.10.1 h1:0pHpWtx9vcvC0xGZqEQlQdfSQs7WRlAjuPvk3fOZDCo=
571-
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
572572
github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw=
573573
github.com/mattn/go-isatty v0.0.13 h1:qdl+GuBjcsKKDco5BsxPJlId98mSWNKqYA+Co0SC1yA=
574574
github.com/nishanths/predeclared v0.0.0-20200524104333-86fad755b4d3 h1:3f0nxAmdj/VoCGN/ijdMy7bj6SBagaqYg1B0hu8clMA=
575575
github.com/phpdave11/gofpdf v1.4.2 h1:KPKiIbfwbvC/wOncwhrpRdXVj2CZTCFlw4wnoyjtHfQ=
576576
github.com/phpdave11/gofpdi v1.0.13 h1:o61duiW8M9sMlkVXWlvP92sZJtGKENvW3VExs6dZukQ=
577577
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A=
578-
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
579578
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM=
580579
github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ=
581580
github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s=
582581
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
583-
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
582+
github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
584583
github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245 h1:K1Xf3bKttbF+koVGaX5xngRIZ5bVjbmPnaxE/dR08uY=
585584
github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
586585
github.com/thrift-iterator/go v0.0.0-20190402154806-9b5a67519118 h1:MIx5ElxAmfKzHGb3ptBbq9YE3weh55cH1Mb7VA4Oxbg=
@@ -631,11 +630,9 @@ golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
631630
golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
632631
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
633632
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
634-
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
635633
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
636634
golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
637635
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
638-
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
639636
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
640637
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
641638
golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek=

logging/zerolog/README.md

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# Kitex zerolog (This is a community driven project)
2+
3+
## Introduction
4+
5+
This is a logger library that uses [zerolog](https://github.com/rs/zerolog) to implement the [Kitex logger interface](https://www.cloudwego.io/docs/kitex/tutorials/basic-feature/logging/), work together with kitex [obs-opentelemetry](https://github.com/kitex-contrib/obs-opentelemetry)
6+
7+
## Usage
8+
9+
Download and install it:
10+
11+
```go
12+
go get github.com/kitex-contrib/obs-opentelemetry/logging/zerolog
13+
```
14+
15+
Import it in your code:
16+
17+
```go
18+
import kitexzerolog github.com/kitex-contrib/obs-opentelemetry/logging/zerolog
19+
```
20+
21+
### Set logger impl
22+
23+
```go
24+
package main
25+
26+
import (
27+
"github.com/rs/zerolog/log"
28+
"github.com/cloudwego/kitex/pkg/klog"
29+
kitexzerolog "github.com/kitex-contrib/obs-opentelemetry/logging/zerolog"
30+
)
31+
32+
func main() {
33+
logger := kitexzerolog.NewLogger()
34+
klog.SetLogger(logger)
35+
klog.SetLevel(klog.LevelDebug)
36+
37+
// OR / AND using global logger
38+
log.Logger = *logger.Logger()
39+
}
40+
```
41+
42+
> We provide some methods to help you customize logger
43+
44+
| Configuration | Description |
45+
| -------------------------- | ----------------------------------------------------------------------------- |
46+
| WithLogger | [Logger](https://pkg.go.dev/github.com/rs/zerolog#Logger) |
47+
| WithTraceErrorSpanLevel | trace error span level option |
48+
| WithRecordStackTraceInSpan | record stack track option |
49+
50+
### Log with context
51+
52+
```go
53+
// Echo implements the Echo interface.
54+
func (s *EchoImpl) Echo(ctx context.Context, req *api.Request) (resp *api.Response, err error) {
55+
klog.CtxDebugf(ctx, "echo called: %s", req.GetMessage())
56+
return &api.Response{Message: req.Message}, nil
57+
}
58+
```
59+
60+
### Log with global logger
61+
62+
In case your code base has already used global logger from zerolog
63+
64+
```go
65+
import (
66+
"github.com/rs/zerolog/log"
67+
)
68+
69+
// Echo implements the Echo interface.
70+
func (s *EchoImpl) Echo(ctx context.Context, req *api.Request) (resp *api.Response, err error) {
71+
log.Debug().Ctx(ctx).Msgf("echo called: %s", req.GetMessage())
72+
return &api.Response{Message: req.Message}, nil
73+
}
74+
```
75+
76+
### View log
77+
78+
```json
79+
{
80+
"level": "info",
81+
"ts": 1667619647.1459548,
82+
"msg": "hello world",
83+
"trace_id": "c77e46c0fb590ee80b6d78ed6682768e",
84+
"span_id": "b42c96c6dd01ceaf",
85+
"trace_flags": "01"
86+
}
87+
```
88+
89+
> For some reason, zerolog will not log extra context info.

logging/zerolog/go.mod

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
module github.com/kitex-contrib/obs-opentelemetry/logging/zerolog
2+
3+
go 1.19
4+
5+
require (
6+
github.com/cloudwego/kitex v0.7.3
7+
github.com/rs/zerolog v1.31.0
8+
go.opentelemetry.io/otel v1.19.0
9+
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.16.0
10+
go.opentelemetry.io/otel/sdk v1.19.0
11+
go.opentelemetry.io/otel/trace v1.19.0
12+
)
13+
14+
require (
15+
github.com/go-logr/logr v1.3.0 // indirect
16+
github.com/go-logr/stdr v1.2.2 // indirect
17+
github.com/mattn/go-colorable v0.1.13 // indirect
18+
github.com/mattn/go-isatty v0.0.19 // indirect
19+
go.opentelemetry.io/otel/metric v1.19.0 // indirect
20+
golang.org/x/sys v0.13.0 // indirect
21+
)

0 commit comments

Comments
 (0)