diff --git a/qlog/event.go b/qlog/event.go index f15eae84..8427b6e2 100644 --- a/qlog/event.go +++ b/qlog/event.go @@ -138,6 +138,7 @@ func (e eventConnectionClosed) MarshalJSONObject(enc *gojay.Encoder) { } enc.StringKey("owner", owner.String()) enc.Uint64Key("application_code", uint64(applicationErr.ErrorCode)) + enc.StringKey("reason", applicationErr.ErrorMessage) case errors.As(e.e, &transportErr): owner := ownerLocal if transportErr.Remote { @@ -145,6 +146,7 @@ func (e eventConnectionClosed) MarshalJSONObject(enc *gojay.Encoder) { } enc.StringKey("owner", owner.String()) enc.StringKey("connection_code", transportError(transportErr.ErrorCode).String()) + enc.StringKey("reason", transportErr.ErrorMessage) case errors.As(e.e, &versionNegotiationErr): enc.StringKey("owner", ownerRemote.String()) enc.StringKey("trigger", "version_negotiation") diff --git a/qlog/qlog_test.go b/qlog/qlog_test.go index f6ec23b8..f43390c4 100644 --- a/qlog/qlog_test.go +++ b/qlog/qlog_test.go @@ -244,27 +244,33 @@ var _ = Describe("Tracing", func() { It("records application errors", func() { tracer.ClosedConnection(&quic.ApplicationError{ - Remote: true, - ErrorCode: 1337, + Remote: true, + ErrorCode: 1337, + ErrorMessage: "foobar", }) entry := exportAndParseSingle() Expect(entry.Time).To(BeTemporally("~", time.Now(), scaleDuration(10*time.Millisecond))) Expect(entry.Name).To(Equal("transport:connection_closed")) ev := entry.Event - Expect(ev).To(HaveLen(2)) + Expect(ev).To(HaveLen(3)) Expect(ev).To(HaveKeyWithValue("owner", "remote")) Expect(ev).To(HaveKeyWithValue("application_code", float64(1337))) + Expect(ev).To(HaveKeyWithValue("reason", "foobar")) }) It("records transport errors", func() { - tracer.ClosedConnection(&quic.TransportError{ErrorCode: qerr.AEADLimitReached}) + tracer.ClosedConnection(&quic.TransportError{ + ErrorCode: qerr.AEADLimitReached, + ErrorMessage: "foobar", + }) entry := exportAndParseSingle() Expect(entry.Time).To(BeTemporally("~", time.Now(), scaleDuration(10*time.Millisecond))) Expect(entry.Name).To(Equal("transport:connection_closed")) ev := entry.Event - Expect(ev).To(HaveLen(2)) + Expect(ev).To(HaveLen(3)) Expect(ev).To(HaveKeyWithValue("owner", "local")) Expect(ev).To(HaveKeyWithValue("connection_code", "aead_limit_reached")) + Expect(ev).To(HaveKeyWithValue("reason", "foobar")) }) It("records sent transport parameters", func() {