From 36c185100b2e6416f4f6c22cd6cde4859460c6f9 Mon Sep 17 00:00:00 2001 From: genofire Date: Wed, 29 Sep 2021 13:08:43 +0200 Subject: [PATCH] migrate to zap logging - fast --- go.mod | 4 +--- go.sum | 23 +++++++++++++++++------ mailer/test.go | 14 ++++++++------ mailer/test_test.go | 3 ++- web/main.go | 15 +++++++++++---- web/module.go | 4 ++-- web/ws/main.go | 16 +++++++++------- 7 files changed, 50 insertions(+), 29 deletions(-) diff --git a/go.mod b/go.mod index 178be81..ced13c2 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,6 @@ module dev.sum7.eu/genofire/golang-lib go 1.16 require ( - github.com/bdlm/log v0.1.20 - github.com/bdlm/std v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/chenjiandongx/ginprom v0.0.0-20210617023641-6c809602c38a github.com/genofire/gormigrate/v2 v2.0.1-0.20210715085530-7373801d0902 @@ -33,10 +31,10 @@ require ( github.com/rs/xid v1.3.0 // indirect github.com/stretchr/testify v1.7.0 github.com/ugorji/go v1.2.6 // indirect + go.uber.org/zap v1.19.1 golang.org/x/crypto v0.0.0-20210915214749-c084706c2272 golang.org/x/net v0.0.0-20210913180222-943fd674d43e // indirect golang.org/x/sys v0.0.0-20210915083310-ed5796bab164 // indirect - golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b // indirect golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac google.golang.org/protobuf v1.27.1 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect diff --git a/go.sum b/go.sum index af511a5..5b332a5 100644 --- a/go.sum +++ b/go.sum @@ -40,10 +40,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/bdlm/log v0.1.20 h1:fSxBuBSHz+DkxPSFlaVcPiep20mCYUJZ5azUynkjhfA= -github.com/bdlm/log v0.1.20/go.mod h1:30V5Zwc5Vt5ePq5rd9KJ6JQ/A5aFUcKzq5fYtO7c9qc= -github.com/bdlm/std v1.0.1 h1:USdxays+0tgB3BJCEQ9z942tmTWmzpVPC7jCvczsj/I= -github.com/bdlm/std v1.0.1/go.mod h1:dittT3gnvbHQ4P+1UbkdSwkHFHVl1gx8qYu4zIFyB+Q= +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -432,6 +430,7 @@ github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxW github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= @@ -442,13 +441,21 @@ go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.11-0.20210813005559-691160354723 h1:sHOAIxRGBp443oHZIPB+HsUGaksVCXVQENPxwTfQdH4= +go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.19.1 h1:ue41HOKd1vGURxrmeKIgELGb3jPW9DMUDGtsinblHwI= +go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -499,6 +506,7 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -529,6 +537,7 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210913180222-943fd674d43e h1:+b/22bPvDYt4NPDcy4xAGCmON713ONAWFeY3Z7I3tR8= golang.org/x/net v0.0.0-20210913180222-943fd674d43e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -547,6 +556,7 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -586,7 +596,9 @@ golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -595,8 +607,6 @@ golang.org/x/sys v0.0.0-20210915083310-ed5796bab164 h1:7ZDGnxgHAMw7thfC5bEos0RDA golang.org/x/sys v0.0.0-20210915083310-ed5796bab164/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b h1:9zKuko04nR4gjZ4+DNjHqRlAJqbJETHwiNKDqTfOjfE= -golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -657,6 +667,7 @@ golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/mailer/test.go b/mailer/test.go index c7901c1..9884a6b 100644 --- a/mailer/test.go +++ b/mailer/test.go @@ -6,12 +6,13 @@ import ( "net" "net/textproto" - "github.com/bdlm/log" + "go.uber.org/zap" ) var defaultStartupPort = 12025 type fakeServer struct { + log *zap.Logger s *Service l net.Listener Mails chan *TestingMail @@ -24,7 +25,7 @@ type TestingMail struct { } // NewFakeServer - to get mocked Service for mail-service -func NewFakeServer() (*fakeServer, *Service) { +func NewFakeServer(log *zap.Logger) (*fakeServer, *Service) { s := &Service{ SMTPHost: "127.0.0.1", SMTPPort: defaultStartupPort, @@ -34,17 +35,18 @@ func NewFakeServer() (*fakeServer, *Service) { From: "golang-lib@example.org", } defaultStartupPort++ - return newFakeServer(s) + return newFakeServer(s, log) } -func newFakeServer(s *Service) (*fakeServer, *Service) { +func newFakeServer(s *Service, log *zap.Logger) (*fakeServer, *Service) { fs := &fakeServer{ + log: log, s: s, Mails: make(chan *TestingMail), } l, err := net.Listen("tcp", fmt.Sprintf("%s:%d", fs.s.SMTPHost, fs.s.SMTPPort)) if err != nil { - log.Panicf("Error listing: %s", err) + log.Panic("error listing", zap.Error(err)) return nil, nil } fs.l = l @@ -63,7 +65,7 @@ func (fs *fakeServer) run() { if errors.Is(err, net.ErrClosed) { return } - log.Panicf("Error accepting: %s", err) + fs.log.Panic("Error accepting", zap.Error(err)) } go fs.handle(conn) } diff --git a/mailer/test_test.go b/mailer/test_test.go index 1771349..34f62ee 100644 --- a/mailer/test_test.go +++ b/mailer/test_test.go @@ -4,6 +4,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "go.uber.org/zap" ) func TestFakeServer(t *testing.T) { @@ -19,7 +20,7 @@ func TestFakeServer(t *testing.T) { // Port assert.Panics(func() { - mock, _ := newFakeServer(s) + mock, _ := newFakeServer(s, zap.L()) mock.Close() }) } diff --git a/web/main.go b/web/main.go index 539cf87..e9c887d 100644 --- a/web/main.go +++ b/web/main.go @@ -10,8 +10,8 @@ maintains a list of modules. When it runs, it executes all of its modules. package web import ( - "github.com/bdlm/log" "github.com/gin-gonic/gin" + "go.uber.org/zap" // acme "github.com/gin-gonic/autotls" @@ -41,12 +41,19 @@ type Service struct { DB *gorm.DB `toml:"-"` Mailer *mailer.Service `toml:"-"` + log *zap.Logger modules []ModuleRegisterFunc } +// Log - get current logger +func (s *Service) Log() *zap.Logger { + return s.log +} + // Run creates, configures, and runs a new gin.Engine using its registered // modules. -func (s *Service) Run() error { +func (s *Service) Run(log *zap.Logger) error { + s.log = log gin.EnableJsonDecoderDisallowUnknownFields() gin.SetMode(gin.ReleaseMode) r := gin.New() @@ -55,14 +62,14 @@ func (s *Service) Run() error { if s.AccessLog { r.Use(gin.Logger()) - log.Debug("request logging enabled") + s.log.Debug("request logging enabled") } s.LoadSession(r) s.Bind(r) if s.ACME.Enable { if s.Listen != "" { - log.Panic("For ACME / Let's Encrypt it is not possible to set `listen`") + s.log.Panic("For ACME / Let's Encrypt it is not possible to set `listen`") } m := autocert.Manager{ Prompt: autocert.AcceptTOS, diff --git a/web/module.go b/web/module.go index 8adad94..b8d05de 100644 --- a/web/module.go +++ b/web/module.go @@ -1,9 +1,9 @@ package web import ( - "github.com/bdlm/log" "github.com/gin-contrib/static" "github.com/gin-gonic/gin" + "go.uber.org/zap" ) // A ModuleRegisterFunc is a module. @@ -20,6 +20,6 @@ func (ws *Service) Bind(r *gin.Engine) { f(r, ws) } - log.Infof("loaded %d modules", len(ws.modules)) + ws.log.Info("bind modules", zap.Int("count", len(ws.modules))) r.Use(static.Serve("/", static.LocalFile(ws.Webroot, false))) } diff --git a/web/ws/main.go b/web/ws/main.go index 0e7003e..6f3a1a4 100644 --- a/web/ws/main.go +++ b/web/ws/main.go @@ -6,9 +6,9 @@ import ( "sync" "time" - "github.com/bdlm/log" "github.com/gin-gonic/gin" "github.com/google/uuid" + "go.uber.org/zap" "golang.org/x/time/rate" "nhooyr.io/websocket" @@ -17,6 +17,7 @@ import ( // WebsocketEndpoint to handle Request type WebsocketEndpoint struct { + log *zap.Logger // publishLimiter controls the rate limit applied to the publish endpoint. // // Defaults to one publish every 100ms with a burst of 8. @@ -72,8 +73,9 @@ func (m *Message) Reply(msg *Message) { type MessageHandleFunc func(ctx context.Context, msg *Message) // NewEndpoint - create an empty websocket -func NewEndpoint() *WebsocketEndpoint { +func NewEndpoint(log *zap.Logger) *WebsocketEndpoint { return &WebsocketEndpoint{ + log: log, publishLimiter: rate.NewLimiter(rate.Every(time.Millisecond*100), 8), Subscribers: make(map[*Subscriber]struct{}), handlers: make(map[string]MessageHandleFunc), @@ -119,7 +121,7 @@ func (we *WebsocketEndpoint) Handler(ctx *gin.Context) { websocket.CloseStatus(err) == websocket.StatusGoingAway { return } - log.Errorf("subscriber stopped: %s", err) + we.log.Error("subscriber stopped", zap.Error(err)) } // addSubscriber and startup of websocket endpoint @@ -141,7 +143,7 @@ func (we *WebsocketEndpoint) addSubscriber(ctxGin *gin.Context, c *websocket.Con if we.OnClose != nil { we.OnClose(s, s.out) } - log.Debug("websocket closed") + we.log.Debug("websocket closed") }() if we.OnOpen != nil { @@ -156,10 +158,10 @@ func (we *WebsocketEndpoint) addSubscriber(ctxGin *gin.Context, c *websocket.Con websocket.CloseStatus(err) == websocket.StatusGoingAway { return } - log.Errorf("websocket reading error: %s", err) + we.log.Error("websocket reading error", zap.Error(err)) }() - log.Debug("websocket started") + we.log.Debug("websocket started") for { select { @@ -182,7 +184,7 @@ func (we *WebsocketEndpoint) readWorker(ctx context.Context, c *websocket.Conn, if err != nil { return err } - log.WithField("type", msg.Type).Debug("receive") + we.log.Debug("receive", zap.String("type", msg.Type)) msg.Subscriber = s if handler, ok := we.handlers[msg.Type]; ok { handler(ctx, &msg)