You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by yu...@apache.org on 2023/11/17 20:43:48 UTC
(thrift) branch go-slog created (now da8e4d809)
This is an automated email from the ASF dual-hosted git repository.
yuxuan pushed a change to branch go-slog
in repository https://gitbox.apache.org/repos/asf/thrift.git
at da8e4d809 THRIFT-5744: Switch to slog for go library
This branch includes the following new commits:
new da8e4d809 THRIFT-5744: Switch to slog for go library
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(thrift) 01/01: THRIFT-5744: Switch to slog for go library
Posted by yu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
yuxuan pushed a commit to branch go-slog
in repository https://gitbox.apache.org/repos/asf/thrift.git
commit da8e4d809ab5a232e27f83572571d1a4608b3815
Author: Yuxuan 'fishy' Wang <yu...@reddit.com>
AuthorDate: Fri Nov 17 12:36:31 2023 -0800
THRIFT-5744: Switch to slog for go library
Client: go
---
.github/workflows/build.yml | 4 +-
LANGUAGES.md | 2 +-
go.mod | 2 +-
lib/go/thrift/debug_protocol.go | 329 +++++++++++++++++++++++++++++++++-------
lib/go/thrift/logger.go | 12 ++
lib/go/thrift/simple_server.go | 23 ++-
6 files changed, 311 insertions(+), 61 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 7dfc14feb..7b5f15832 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -83,8 +83,8 @@ jobs:
strategy:
matrix:
go:
- - '1.20'
- '1.21'
+ # TODO: Add 1.22 when it's released
fail-fast: false
steps:
- uses: actions/checkout@v4
@@ -128,7 +128,7 @@ jobs:
run: make -C test/go precross
- name: Upload go precross artifacts
- if: matrix.go == '1.21'
+ if: matrix.go == '1.21' # TODO: change to 1.22 when it's released
uses: actions/upload-artifact@v3
with:
name: go-precross
diff --git a/LANGUAGES.md b/LANGUAGES.md
index 236007f9a..4952ade15 100644
--- a/LANGUAGES.md
+++ b/LANGUAGES.md
@@ -163,7 +163,7 @@ Thrift's core protocol is TBinary, supported by all languages except for JavaScr
<td align=left><a href="https://github.com/apache/thrift/blob/master/lib/go/README.md">Go</a></td>
<!-- Since -----------------><td>0.7.0</td>
<!-- Build Systems ---------><td><img src="/doc/images/cgrn.png" alt="Yes"/></td><td><img src="/doc/images/cred.png" alt=""/></td>
-<!-- Language Levels -------><td>1.20</td><td>1.21</td>
+<!-- Language Levels -------><td>1.21</td><td>1.22</td>
<!-- Field types -----------><td><img src="/doc/images/cred.png" alt=""/></td>
<!-- Low-Level Transports --><td><img src="/doc/images/cred.png" alt=""/></td><td><img src="/doc/images/cred.png" alt=""/></td><td><img src="/doc/images/cgrn.png" alt="Yes"/></td><td><img src="/doc/images/cred.png" alt=""/></td><td><img src="/doc/images/cgrn.png" alt="Yes"/></td><td><img src="/doc/images/cgrn.png" alt="Yes"/></td>
<!-- Transport Wrappers ----><td><img src="/doc/images/cgrn.png" alt="Yes"/></td><td><img src="/doc/images/cgrn.png" alt="Yes"/></td><td><img src="/doc/images/cgrn.png" alt="Yes"/></td><td><img src="/doc/images/cgrn.png" alt="Yes"/></td>
diff --git a/go.mod b/go.mod
index 7be425635..b435d78a3 100644
--- a/go.mod
+++ b/go.mod
@@ -1,3 +1,3 @@
module github.com/apache/thrift
-go 1.20
+go 1.21
diff --git a/lib/go/thrift/debug_protocol.go b/lib/go/thrift/debug_protocol.go
index 83ccad94b..d730411b4 100644
--- a/lib/go/thrift/debug_protocol.go
+++ b/lib/go/thrift/debug_protocol.go
@@ -21,7 +21,7 @@ package thrift
import (
"context"
- "fmt"
+ "log/slog"
)
type TDebugProtocol struct {
@@ -34,7 +34,11 @@ type TDebugProtocol struct {
// If Logger is nil, StdLogger using stdlib log package with os.Stderr
// will be used. If disable logging is desired, set Logger to NopLogger
// explicitly instead of leaving it as nil/unset.
- Logger Logger
+ //
+ // Deprecated: TDebugProtocol always use slog at debug level now.
+ // This field will be removed in a future version.
+ Logger Logger
+
LogPrefix string
// Optional. An TProtocol to duplicate everything read/written from Delegate.
@@ -86,13 +90,16 @@ func (t *TDebugProtocolFactory) GetProtocol(trans TTransport) TProtocol {
}
}
-func (tdp *TDebugProtocol) logf(format string, v ...interface{}) {
- fallbackLogger(tdp.Logger)(fmt.Sprintf(format, v...))
-}
-
func (tdp *TDebugProtocol) WriteMessageBegin(ctx context.Context, name string, typeId TMessageType, seqid int32) error {
err := tdp.Delegate.WriteMessageBegin(ctx, name, typeId, seqid)
- tdp.logf("%sWriteMessageBegin(name=%#v, typeId=%#v, seqid=%#v) => %#v", tdp.LogPrefix, name, typeId, seqid, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteMessageBegin",
+ "name", name,
+ "typeId", typeId,
+ "seqid", seqid,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteMessageBegin(ctx, name, typeId, seqid)
}
@@ -100,7 +107,11 @@ func (tdp *TDebugProtocol) WriteMessageBegin(ctx context.Context, name string, t
}
func (tdp *TDebugProtocol) WriteMessageEnd(ctx context.Context) error {
err := tdp.Delegate.WriteMessageEnd(ctx)
- tdp.logf("%sWriteMessageEnd() => %#v", tdp.LogPrefix, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteMessageEnd",
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteMessageEnd(ctx)
}
@@ -108,7 +119,12 @@ func (tdp *TDebugProtocol) WriteMessageEnd(ctx context.Context) error {
}
func (tdp *TDebugProtocol) WriteStructBegin(ctx context.Context, name string) error {
err := tdp.Delegate.WriteStructBegin(ctx, name)
- tdp.logf("%sWriteStructBegin(name=%#v) => %#v", tdp.LogPrefix, name, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteStructBegin",
+ "name", name,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteStructBegin(ctx, name)
}
@@ -116,7 +132,11 @@ func (tdp *TDebugProtocol) WriteStructBegin(ctx context.Context, name string) er
}
func (tdp *TDebugProtocol) WriteStructEnd(ctx context.Context) error {
err := tdp.Delegate.WriteStructEnd(ctx)
- tdp.logf("%sWriteStructEnd() => %#v", tdp.LogPrefix, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteStructEnd",
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteStructEnd(ctx)
}
@@ -124,7 +144,14 @@ func (tdp *TDebugProtocol) WriteStructEnd(ctx context.Context) error {
}
func (tdp *TDebugProtocol) WriteFieldBegin(ctx context.Context, name string, typeId TType, id int16) error {
err := tdp.Delegate.WriteFieldBegin(ctx, name, typeId, id)
- tdp.logf("%sWriteFieldBegin(name=%#v, typeId=%#v, id%#v) => %#v", tdp.LogPrefix, name, typeId, id, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteFieldBegin",
+ "name", name,
+ "typeId", typeId,
+ "id", id,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteFieldBegin(ctx, name, typeId, id)
}
@@ -132,7 +159,11 @@ func (tdp *TDebugProtocol) WriteFieldBegin(ctx context.Context, name string, typ
}
func (tdp *TDebugProtocol) WriteFieldEnd(ctx context.Context) error {
err := tdp.Delegate.WriteFieldEnd(ctx)
- tdp.logf("%sWriteFieldEnd() => %#v", tdp.LogPrefix, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteFieldEnd",
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteFieldEnd(ctx)
}
@@ -140,7 +171,11 @@ func (tdp *TDebugProtocol) WriteFieldEnd(ctx context.Context) error {
}
func (tdp *TDebugProtocol) WriteFieldStop(ctx context.Context) error {
err := tdp.Delegate.WriteFieldStop(ctx)
- tdp.logf("%sWriteFieldStop() => %#v", tdp.LogPrefix, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteFieldStop",
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteFieldStop(ctx)
}
@@ -148,7 +183,14 @@ func (tdp *TDebugProtocol) WriteFieldStop(ctx context.Context) error {
}
func (tdp *TDebugProtocol) WriteMapBegin(ctx context.Context, keyType TType, valueType TType, size int) error {
err := tdp.Delegate.WriteMapBegin(ctx, keyType, valueType, size)
- tdp.logf("%sWriteMapBegin(keyType=%#v, valueType=%#v, size=%#v) => %#v", tdp.LogPrefix, keyType, valueType, size, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteMapBegin",
+ "keyType", keyType,
+ "valueType", valueType,
+ "size", size,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteMapBegin(ctx, keyType, valueType, size)
}
@@ -156,7 +198,11 @@ func (tdp *TDebugProtocol) WriteMapBegin(ctx context.Context, keyType TType, val
}
func (tdp *TDebugProtocol) WriteMapEnd(ctx context.Context) error {
err := tdp.Delegate.WriteMapEnd(ctx)
- tdp.logf("%sWriteMapEnd() => %#v", tdp.LogPrefix, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteMapEnd",
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteMapEnd(ctx)
}
@@ -164,7 +210,13 @@ func (tdp *TDebugProtocol) WriteMapEnd(ctx context.Context) error {
}
func (tdp *TDebugProtocol) WriteListBegin(ctx context.Context, elemType TType, size int) error {
err := tdp.Delegate.WriteListBegin(ctx, elemType, size)
- tdp.logf("%sWriteListBegin(elemType=%#v, size=%#v) => %#v", tdp.LogPrefix, elemType, size, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteListBegin",
+ "elemType", elemType,
+ "size", size,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteListBegin(ctx, elemType, size)
}
@@ -172,7 +224,11 @@ func (tdp *TDebugProtocol) WriteListBegin(ctx context.Context, elemType TType, s
}
func (tdp *TDebugProtocol) WriteListEnd(ctx context.Context) error {
err := tdp.Delegate.WriteListEnd(ctx)
- tdp.logf("%sWriteListEnd() => %#v", tdp.LogPrefix, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteListEnd",
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteListEnd(ctx)
}
@@ -180,7 +236,13 @@ func (tdp *TDebugProtocol) WriteListEnd(ctx context.Context) error {
}
func (tdp *TDebugProtocol) WriteSetBegin(ctx context.Context, elemType TType, size int) error {
err := tdp.Delegate.WriteSetBegin(ctx, elemType, size)
- tdp.logf("%sWriteSetBegin(elemType=%#v, size=%#v) => %#v", tdp.LogPrefix, elemType, size, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteSetBegin",
+ "elemType", elemType,
+ "size", size,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteSetBegin(ctx, elemType, size)
}
@@ -188,7 +250,11 @@ func (tdp *TDebugProtocol) WriteSetBegin(ctx context.Context, elemType TType, si
}
func (tdp *TDebugProtocol) WriteSetEnd(ctx context.Context) error {
err := tdp.Delegate.WriteSetEnd(ctx)
- tdp.logf("%sWriteSetEnd() => %#v", tdp.LogPrefix, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteSetEnd",
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteSetEnd(ctx)
}
@@ -196,7 +262,12 @@ func (tdp *TDebugProtocol) WriteSetEnd(ctx context.Context) error {
}
func (tdp *TDebugProtocol) WriteBool(ctx context.Context, value bool) error {
err := tdp.Delegate.WriteBool(ctx, value)
- tdp.logf("%sWriteBool(value=%#v) => %#v", tdp.LogPrefix, value, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteBool",
+ "value", value,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteBool(ctx, value)
}
@@ -204,7 +275,12 @@ func (tdp *TDebugProtocol) WriteBool(ctx context.Context, value bool) error {
}
func (tdp *TDebugProtocol) WriteByte(ctx context.Context, value int8) error {
err := tdp.Delegate.WriteByte(ctx, value)
- tdp.logf("%sWriteByte(value=%#v) => %#v", tdp.LogPrefix, value, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteByte",
+ "value", value,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteByte(ctx, value)
}
@@ -212,7 +288,12 @@ func (tdp *TDebugProtocol) WriteByte(ctx context.Context, value int8) error {
}
func (tdp *TDebugProtocol) WriteI16(ctx context.Context, value int16) error {
err := tdp.Delegate.WriteI16(ctx, value)
- tdp.logf("%sWriteI16(value=%#v) => %#v", tdp.LogPrefix, value, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteI16",
+ "value", value,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteI16(ctx, value)
}
@@ -220,7 +301,12 @@ func (tdp *TDebugProtocol) WriteI16(ctx context.Context, value int16) error {
}
func (tdp *TDebugProtocol) WriteI32(ctx context.Context, value int32) error {
err := tdp.Delegate.WriteI32(ctx, value)
- tdp.logf("%sWriteI32(value=%#v) => %#v", tdp.LogPrefix, value, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteI32",
+ "value", value,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteI32(ctx, value)
}
@@ -228,7 +314,12 @@ func (tdp *TDebugProtocol) WriteI32(ctx context.Context, value int32) error {
}
func (tdp *TDebugProtocol) WriteI64(ctx context.Context, value int64) error {
err := tdp.Delegate.WriteI64(ctx, value)
- tdp.logf("%sWriteI64(value=%#v) => %#v", tdp.LogPrefix, value, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteI64",
+ "value", value,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteI64(ctx, value)
}
@@ -236,7 +327,12 @@ func (tdp *TDebugProtocol) WriteI64(ctx context.Context, value int64) error {
}
func (tdp *TDebugProtocol) WriteDouble(ctx context.Context, value float64) error {
err := tdp.Delegate.WriteDouble(ctx, value)
- tdp.logf("%sWriteDouble(value=%#v) => %#v", tdp.LogPrefix, value, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteDouble",
+ "value", value,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteDouble(ctx, value)
}
@@ -244,7 +340,12 @@ func (tdp *TDebugProtocol) WriteDouble(ctx context.Context, value float64) error
}
func (tdp *TDebugProtocol) WriteString(ctx context.Context, value string) error {
err := tdp.Delegate.WriteString(ctx, value)
- tdp.logf("%sWriteString(value=%#v) => %#v", tdp.LogPrefix, value, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteString",
+ "value", value,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteString(ctx, value)
}
@@ -252,7 +353,12 @@ func (tdp *TDebugProtocol) WriteString(ctx context.Context, value string) error
}
func (tdp *TDebugProtocol) WriteBinary(ctx context.Context, value []byte) error {
err := tdp.Delegate.WriteBinary(ctx, value)
- tdp.logf("%sWriteBinary(value=%#v) => %#v", tdp.LogPrefix, value, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteBinary",
+ "value", value,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteBinary(ctx, value)
}
@@ -260,7 +366,12 @@ func (tdp *TDebugProtocol) WriteBinary(ctx context.Context, value []byte) error
}
func (tdp *TDebugProtocol) WriteUUID(ctx context.Context, value Tuuid) error {
err := tdp.Delegate.WriteUUID(ctx, value)
- tdp.logf("%sWriteUUID(value=%#v) => %#v", tdp.LogPrefix, value, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"WriteUUID",
+ "value", value,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteUUID(ctx, value)
}
@@ -269,7 +380,14 @@ func (tdp *TDebugProtocol) WriteUUID(ctx context.Context, value Tuuid) error {
func (tdp *TDebugProtocol) ReadMessageBegin(ctx context.Context) (name string, typeId TMessageType, seqid int32, err error) {
name, typeId, seqid, err = tdp.Delegate.ReadMessageBegin(ctx)
- tdp.logf("%sReadMessageBegin() (name=%#v, typeId=%#v, seqid=%#v, err=%#v)", tdp.LogPrefix, name, typeId, seqid, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadMessageBegin",
+ "name", name,
+ "typeId", typeId,
+ "seqid", seqid,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteMessageBegin(ctx, name, typeId, seqid)
}
@@ -277,7 +395,11 @@ func (tdp *TDebugProtocol) ReadMessageBegin(ctx context.Context) (name string, t
}
func (tdp *TDebugProtocol) ReadMessageEnd(ctx context.Context) (err error) {
err = tdp.Delegate.ReadMessageEnd(ctx)
- tdp.logf("%sReadMessageEnd() err=%#v", tdp.LogPrefix, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadMessageEnd",
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteMessageEnd(ctx)
}
@@ -285,7 +407,12 @@ func (tdp *TDebugProtocol) ReadMessageEnd(ctx context.Context) (err error) {
}
func (tdp *TDebugProtocol) ReadStructBegin(ctx context.Context) (name string, err error) {
name, err = tdp.Delegate.ReadStructBegin(ctx)
- tdp.logf("%sReadStructBegin() (name%#v, err=%#v)", tdp.LogPrefix, name, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadStructBegin",
+ "name", name,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteStructBegin(ctx, name)
}
@@ -293,7 +420,11 @@ func (tdp *TDebugProtocol) ReadStructBegin(ctx context.Context) (name string, er
}
func (tdp *TDebugProtocol) ReadStructEnd(ctx context.Context) (err error) {
err = tdp.Delegate.ReadStructEnd(ctx)
- tdp.logf("%sReadStructEnd() err=%#v", tdp.LogPrefix, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadStructEnd",
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteStructEnd(ctx)
}
@@ -301,7 +432,14 @@ func (tdp *TDebugProtocol) ReadStructEnd(ctx context.Context) (err error) {
}
func (tdp *TDebugProtocol) ReadFieldBegin(ctx context.Context) (name string, typeId TType, id int16, err error) {
name, typeId, id, err = tdp.Delegate.ReadFieldBegin(ctx)
- tdp.logf("%sReadFieldBegin() (name=%#v, typeId=%#v, id=%#v, err=%#v)", tdp.LogPrefix, name, typeId, id, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadFieldBegin",
+ "name", name,
+ "typeId", typeId,
+ "id", id,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteFieldBegin(ctx, name, typeId, id)
}
@@ -309,7 +447,11 @@ func (tdp *TDebugProtocol) ReadFieldBegin(ctx context.Context) (name string, typ
}
func (tdp *TDebugProtocol) ReadFieldEnd(ctx context.Context) (err error) {
err = tdp.Delegate.ReadFieldEnd(ctx)
- tdp.logf("%sReadFieldEnd() err=%#v", tdp.LogPrefix, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadFieldEnd",
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteFieldEnd(ctx)
}
@@ -317,7 +459,14 @@ func (tdp *TDebugProtocol) ReadFieldEnd(ctx context.Context) (err error) {
}
func (tdp *TDebugProtocol) ReadMapBegin(ctx context.Context) (keyType TType, valueType TType, size int, err error) {
keyType, valueType, size, err = tdp.Delegate.ReadMapBegin(ctx)
- tdp.logf("%sReadMapBegin() (keyType=%#v, valueType=%#v, size=%#v, err=%#v)", tdp.LogPrefix, keyType, valueType, size, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadMapBegin",
+ "keyType", keyType,
+ "valueType", valueType,
+ "size", size,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteMapBegin(ctx, keyType, valueType, size)
}
@@ -325,7 +474,11 @@ func (tdp *TDebugProtocol) ReadMapBegin(ctx context.Context) (keyType TType, val
}
func (tdp *TDebugProtocol) ReadMapEnd(ctx context.Context) (err error) {
err = tdp.Delegate.ReadMapEnd(ctx)
- tdp.logf("%sReadMapEnd() err=%#v", tdp.LogPrefix, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadMapEnd",
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteMapEnd(ctx)
}
@@ -333,7 +486,13 @@ func (tdp *TDebugProtocol) ReadMapEnd(ctx context.Context) (err error) {
}
func (tdp *TDebugProtocol) ReadListBegin(ctx context.Context) (elemType TType, size int, err error) {
elemType, size, err = tdp.Delegate.ReadListBegin(ctx)
- tdp.logf("%sReadListBegin() (elemType=%#v, size=%#v, err=%#v)", tdp.LogPrefix, elemType, size, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadListBegin",
+ "elemType", elemType,
+ "size", size,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteListBegin(ctx, elemType, size)
}
@@ -341,7 +500,11 @@ func (tdp *TDebugProtocol) ReadListBegin(ctx context.Context) (elemType TType, s
}
func (tdp *TDebugProtocol) ReadListEnd(ctx context.Context) (err error) {
err = tdp.Delegate.ReadListEnd(ctx)
- tdp.logf("%sReadListEnd() err=%#v", tdp.LogPrefix, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadListEnd",
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteListEnd(ctx)
}
@@ -349,7 +512,13 @@ func (tdp *TDebugProtocol) ReadListEnd(ctx context.Context) (err error) {
}
func (tdp *TDebugProtocol) ReadSetBegin(ctx context.Context) (elemType TType, size int, err error) {
elemType, size, err = tdp.Delegate.ReadSetBegin(ctx)
- tdp.logf("%sReadSetBegin() (elemType=%#v, size=%#v, err=%#v)", tdp.LogPrefix, elemType, size, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadSetBegin",
+ "elemType", elemType,
+ "size", size,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteSetBegin(ctx, elemType, size)
}
@@ -357,7 +526,11 @@ func (tdp *TDebugProtocol) ReadSetBegin(ctx context.Context) (elemType TType, si
}
func (tdp *TDebugProtocol) ReadSetEnd(ctx context.Context) (err error) {
err = tdp.Delegate.ReadSetEnd(ctx)
- tdp.logf("%sReadSetEnd() err=%#v", tdp.LogPrefix, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadSetEnd",
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteSetEnd(ctx)
}
@@ -365,7 +538,12 @@ func (tdp *TDebugProtocol) ReadSetEnd(ctx context.Context) (err error) {
}
func (tdp *TDebugProtocol) ReadBool(ctx context.Context) (value bool, err error) {
value, err = tdp.Delegate.ReadBool(ctx)
- tdp.logf("%sReadBool() (value=%#v, err=%#v)", tdp.LogPrefix, value, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadBool",
+ "value", value,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteBool(ctx, value)
}
@@ -373,7 +551,12 @@ func (tdp *TDebugProtocol) ReadBool(ctx context.Context) (value bool, err error)
}
func (tdp *TDebugProtocol) ReadByte(ctx context.Context) (value int8, err error) {
value, err = tdp.Delegate.ReadByte(ctx)
- tdp.logf("%sReadByte() (value=%#v, err=%#v)", tdp.LogPrefix, value, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadByte",
+ "value", value,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteByte(ctx, value)
}
@@ -381,7 +564,12 @@ func (tdp *TDebugProtocol) ReadByte(ctx context.Context) (value int8, err error)
}
func (tdp *TDebugProtocol) ReadI16(ctx context.Context) (value int16, err error) {
value, err = tdp.Delegate.ReadI16(ctx)
- tdp.logf("%sReadI16() (value=%#v, err=%#v)", tdp.LogPrefix, value, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadI16",
+ "value", value,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteI16(ctx, value)
}
@@ -389,7 +577,12 @@ func (tdp *TDebugProtocol) ReadI16(ctx context.Context) (value int16, err error)
}
func (tdp *TDebugProtocol) ReadI32(ctx context.Context) (value int32, err error) {
value, err = tdp.Delegate.ReadI32(ctx)
- tdp.logf("%sReadI32() (value=%#v, err=%#v)", tdp.LogPrefix, value, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadI32",
+ "value", value,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteI32(ctx, value)
}
@@ -397,7 +590,12 @@ func (tdp *TDebugProtocol) ReadI32(ctx context.Context) (value int32, err error)
}
func (tdp *TDebugProtocol) ReadI64(ctx context.Context) (value int64, err error) {
value, err = tdp.Delegate.ReadI64(ctx)
- tdp.logf("%sReadI64() (value=%#v, err=%#v)", tdp.LogPrefix, value, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadI64",
+ "value", value,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteI64(ctx, value)
}
@@ -405,7 +603,12 @@ func (tdp *TDebugProtocol) ReadI64(ctx context.Context) (value int64, err error)
}
func (tdp *TDebugProtocol) ReadDouble(ctx context.Context) (value float64, err error) {
value, err = tdp.Delegate.ReadDouble(ctx)
- tdp.logf("%sReadDouble() (value=%#v, err=%#v)", tdp.LogPrefix, value, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadDouble",
+ "value", value,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteDouble(ctx, value)
}
@@ -413,7 +616,12 @@ func (tdp *TDebugProtocol) ReadDouble(ctx context.Context) (value float64, err e
}
func (tdp *TDebugProtocol) ReadString(ctx context.Context) (value string, err error) {
value, err = tdp.Delegate.ReadString(ctx)
- tdp.logf("%sReadString() (value=%#v, err=%#v)", tdp.LogPrefix, value, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadString",
+ "value", value,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteString(ctx, value)
}
@@ -421,7 +629,12 @@ func (tdp *TDebugProtocol) ReadString(ctx context.Context) (value string, err er
}
func (tdp *TDebugProtocol) ReadBinary(ctx context.Context) (value []byte, err error) {
value, err = tdp.Delegate.ReadBinary(ctx)
- tdp.logf("%sReadBinary() (value=%#v, err=%#v)", tdp.LogPrefix, value, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadBinary",
+ "value", value,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteBinary(ctx, value)
}
@@ -429,7 +642,12 @@ func (tdp *TDebugProtocol) ReadBinary(ctx context.Context) (value []byte, err er
}
func (tdp *TDebugProtocol) ReadUUID(ctx context.Context) (value Tuuid, err error) {
value, err = tdp.Delegate.ReadUUID(ctx)
- tdp.logf("%sReadUUID() (value=%#v, err=%#v)", tdp.LogPrefix, value, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"ReadUUID",
+ "value", value,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.WriteUUID(ctx, value)
}
@@ -437,7 +655,12 @@ func (tdp *TDebugProtocol) ReadUUID(ctx context.Context) (value Tuuid, err error
}
func (tdp *TDebugProtocol) Skip(ctx context.Context, fieldType TType) (err error) {
err = tdp.Delegate.Skip(ctx, fieldType)
- tdp.logf("%sSkip(fieldType=%#v) (err=%#v)", tdp.LogPrefix, fieldType, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"Skip",
+ "fieldType", fieldType,
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.Skip(ctx, fieldType)
}
@@ -445,7 +668,11 @@ func (tdp *TDebugProtocol) Skip(ctx context.Context, fieldType TType) (err error
}
func (tdp *TDebugProtocol) Flush(ctx context.Context) (err error) {
err = tdp.Delegate.Flush(ctx)
- tdp.logf("%sFlush() (err=%#v)", tdp.LogPrefix, err)
+ slog.DebugContext(
+ ctx,
+ tdp.LogPrefix+"Flush",
+ "err", err,
+ )
if tdp.DuplicateTo != nil {
tdp.DuplicateTo.Flush(ctx)
}
diff --git a/lib/go/thrift/logger.go b/lib/go/thrift/logger.go
index c42aac998..4a0affe62 100644
--- a/lib/go/thrift/logger.go
+++ b/lib/go/thrift/logger.go
@@ -35,14 +35,23 @@ import (
//
// See https://issues.apache.org/jira/browse/THRIFT-4985 for the design
// discussion behind it.
+//
+// Deprecated: This is no longer used by any thrift go library code,
+// will be removed in the future version.
type Logger func(msg string)
// NopLogger is a Logger implementation that does nothing.
+//
+// Deprecated: This is no longer used by any thrift go library code,
+// will be removed in the future version.
func NopLogger(msg string) {}
// StdLogger wraps stdlib log package into a Logger.
//
// If logger passed in is nil, it will fallback to use stderr and default flags.
+//
+// Deprecated: This is no longer used by any thrift go library code,
+// will be removed in the future version.
func StdLogger(logger *log.Logger) Logger {
if logger == nil {
logger = log.New(os.Stderr, "", log.LstdFlags)
@@ -55,6 +64,9 @@ func StdLogger(logger *log.Logger) Logger {
// TestLogger is a Logger implementation can be used in test codes.
//
// It fails the test when being called.
+//
+// Deprecated: This is no longer used by any thrift go library code,
+// will be removed in the future version.
func TestLogger(tb testing.TB) Logger {
return func(msg string) {
tb.Errorf("logger called with msg: %q", msg)
diff --git a/lib/go/thrift/simple_server.go b/lib/go/thrift/simple_server.go
index d4f555ccd..a8634fc5f 100644
--- a/lib/go/thrift/simple_server.go
+++ b/lib/go/thrift/simple_server.go
@@ -22,8 +22,8 @@ package thrift
import (
"context"
"errors"
- "fmt"
"io"
+ "log/slog"
"net"
"sync"
"sync/atomic"
@@ -70,7 +70,7 @@ type TSimpleServer struct {
// Headers to auto forward in THeaderProtocol
forwardHeaders []string
- logger Logger
+ logContext atomic.Pointer[context.Context]
}
func NewTSimpleServer2(processor TProcessor, serverTransport TServerTransport) *TSimpleServer {
@@ -179,8 +179,18 @@ func (p *TSimpleServer) SetForwardHeaders(headers []string) {
//
// If no logger was set before Serve is called, a default logger using standard
// log library will be used.
-func (p *TSimpleServer) SetLogger(logger Logger) {
- p.logger = logger
+//
+// Deprecated: The logging inside TSimpleServer is now done via slog on error
+// level, this does nothing now. It will be removed in a future version.
+func (p *TSimpleServer) SetLogger(_ Logger) {}
+
+// SetLogContext sets the context to be used when logging errors inside
+// TSimpleServer.
+//
+// If this is not called before calling Serve, context.Background() will be
+// used.
+func (p *TSimpleServer) SetLogContext(ctx context.Context) {
+ p.logContext.Store(&ctx)
}
func (p *TSimpleServer) innerAccept() (int32, error) {
@@ -202,7 +212,8 @@ func (p *TSimpleServer) innerAccept() (int32, error) {
defer p.wg.Done()
defer cancel()
if err := p.processRequests(client); err != nil {
- p.logger(fmt.Sprintf("error processing request: %v", err))
+ ctx := p.logContext.Load()
+ slog.ErrorContext(*ctx, "error processing request", "err", err)
}
}()
@@ -233,7 +244,7 @@ func (p *TSimpleServer) AcceptLoop() error {
}
func (p *TSimpleServer) Serve() error {
- p.logger = fallbackLogger(p.logger)
+ p.logContext.CompareAndSwap(nil, Pointer(context.Background()))
err := p.Listen()
if err != nil {