Skip to content

Commit 68ba050

Browse files
committed
Adopt slog.Logger
This removes the custom logger interface and adopts the new go 1.21 structured logger
1 parent 4f42dc4 commit 68ba050

34 files changed

+151
-269
lines changed

activity/logger.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ package activity
22

33
import (
44
"context"
5+
"log/slog"
56

67
"github.com/cschleiden/go-workflows/internal/activity"
7-
"github.com/cschleiden/go-workflows/log"
88
)
99

1010
// Logger returns a logger with the workflow instance this activity is executed for set as default fields
11-
func Logger(ctx context.Context) log.Logger {
11+
func Logger(ctx context.Context) *slog.Logger {
1212
return activity.GetActivityState(ctx).Logger
1313
}

activitytester/activitytester.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@ package activitytester
22

33
import (
44
"context"
5+
"log/slog"
56

67
"github.com/cschleiden/go-workflows/internal/activity"
78
"github.com/cschleiden/go-workflows/internal/core"
8-
dlogger "github.com/cschleiden/go-workflows/internal/logger"
9-
"github.com/cschleiden/go-workflows/log"
109
)
1110

12-
func WithActivityTestState(ctx context.Context, activityID, instanceID string, logger log.Logger) context.Context {
11+
func WithActivityTestState(ctx context.Context, activityID, instanceID string, logger *slog.Logger) context.Context {
1312
if logger == nil {
14-
logger = dlogger.NewDefaultLogger()
13+
logger = slog.Default()
1514
}
1615

1716
return activity.WithActivityState(ctx, activity.NewActivityState(activityID, core.NewWorkflowInstance(instanceID, ""), logger))

backend/backend.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ package backend
33
import (
44
"context"
55
"errors"
6+
"log/slog"
67

78
"github.com/cschleiden/go-workflows/internal/contextpropagation"
89
"github.com/cschleiden/go-workflows/internal/converter"
910
core "github.com/cschleiden/go-workflows/internal/core"
1011
"github.com/cschleiden/go-workflows/internal/history"
1112
"github.com/cschleiden/go-workflows/internal/task"
12-
"github.com/cschleiden/go-workflows/log"
1313
"github.com/cschleiden/go-workflows/metrics"
1414
"github.com/cschleiden/go-workflows/workflow"
1515
"go.opentelemetry.io/otel/trace"
@@ -72,7 +72,7 @@ type Backend interface {
7272
GetStats(ctx context.Context) (*Stats, error)
7373

7474
// Logger returns the configured logger for the backend
75-
Logger() log.Logger
75+
Logger() *slog.Logger
7676

7777
// Tracer returns the configured trace provider for the backend
7878
Tracer() trace.Tracer

backend/mock_Backend.go

Lines changed: 12 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backend/mysql/mysql.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"encoding/json"
88
"errors"
99
"fmt"
10+
"log/slog"
1011
"strings"
1112
"time"
1213

@@ -17,7 +18,6 @@ import (
1718
"github.com/cschleiden/go-workflows/internal/history"
1819
"github.com/cschleiden/go-workflows/internal/metrickeys"
1920
"github.com/cschleiden/go-workflows/internal/task"
20-
"github.com/cschleiden/go-workflows/log"
2121
"github.com/cschleiden/go-workflows/metrics"
2222
"github.com/cschleiden/go-workflows/workflow"
2323
_ "github.com/go-sql-driver/mysql"
@@ -63,7 +63,7 @@ type mysqlBackend struct {
6363
options backend.Options
6464
}
6565

66-
func (b *mysqlBackend) Logger() log.Logger {
66+
func (b *mysqlBackend) Logger() *slog.Logger {
6767
return b.options.Logger
6868
}
6969

backend/options.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
11
package backend
22

33
import (
4+
"log/slog"
45
"time"
56

67
"github.com/cschleiden/go-workflows/internal/contextpropagation"
78
"github.com/cschleiden/go-workflows/internal/converter"
8-
"github.com/cschleiden/go-workflows/internal/logger"
99
mi "github.com/cschleiden/go-workflows/internal/metrics"
1010
"github.com/cschleiden/go-workflows/internal/tracing"
11-
"github.com/cschleiden/go-workflows/log"
1211
"github.com/cschleiden/go-workflows/metrics"
1312
"github.com/cschleiden/go-workflows/workflow"
1413
"go.opentelemetry.io/otel/trace"
1514
)
1615

1716
type Options struct {
18-
Logger log.Logger
17+
Logger *slog.Logger
1918

2019
Metrics metrics.Client
2120

@@ -46,7 +45,7 @@ var DefaultOptions Options = Options{
4645
WorkflowLockTimeout: time.Minute,
4746
ActivityLockTimeout: time.Minute * 2,
4847

49-
Logger: logger.NewDefaultLogger(),
48+
Logger: slog.Default(),
5049
Metrics: mi.NewNoopMetricsClient(),
5150
TracerProvider: trace.NewNoopTracerProvider(),
5251
Converter: converter.DefaultConverter,
@@ -62,7 +61,7 @@ func WithStickyTimeout(timeout time.Duration) BackendOption {
6261
}
6362
}
6463

65-
func WithLogger(logger log.Logger) BackendOption {
64+
func WithLogger(logger *slog.Logger) BackendOption {
6665
return func(o *Options) {
6766
o.Logger = logger
6867
}
@@ -100,7 +99,7 @@ func ApplyOptions(opts ...BackendOption) Options {
10099
}
101100

102101
if options.Logger == nil {
103-
options.Logger = logger.NewDefaultLogger()
102+
options.Logger = slog.Default()
104103
}
105104

106105
return options

backend/redis/redis.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package redis
33
import (
44
"context"
55
"fmt"
6+
"log/slog"
67
"time"
78

89
"github.com/cschleiden/go-workflows/backend"
@@ -11,7 +12,6 @@ import (
1112
"github.com/cschleiden/go-workflows/internal/core"
1213
"github.com/cschleiden/go-workflows/internal/history"
1314
"github.com/cschleiden/go-workflows/internal/metrickeys"
14-
"github.com/cschleiden/go-workflows/log"
1515
"github.com/cschleiden/go-workflows/metrics"
1616
"github.com/redis/go-redis/v9"
1717
"go.opentelemetry.io/otel/trace"
@@ -86,7 +86,7 @@ type activityData struct {
8686
Event *history.Event `json:"event,omitempty"`
8787
}
8888

89-
func (rb *redisBackend) Logger() log.Logger {
89+
func (rb *redisBackend) Logger() *slog.Logger {
9090
return rb.options.Logger
9191
}
9292

backend/sqlite/sqlite.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"encoding/json"
88
"errors"
99
"fmt"
10+
"log/slog"
1011
"strings"
1112
"time"
1213

@@ -17,7 +18,6 @@ import (
1718
"github.com/cschleiden/go-workflows/internal/history"
1819
"github.com/cschleiden/go-workflows/internal/metrickeys"
1920
"github.com/cschleiden/go-workflows/internal/task"
20-
"github.com/cschleiden/go-workflows/log"
2121
"github.com/cschleiden/go-workflows/metrics"
2222
"github.com/cschleiden/go-workflows/workflow"
2323
"github.com/google/uuid"
@@ -67,7 +67,7 @@ type sqliteBackend struct {
6767

6868
var _ backend.Backend = (*sqliteBackend)(nil)
6969

70-
func (sb *sqliteBackend) Logger() log.Logger {
70+
func (sb *sqliteBackend) Logger() *slog.Logger {
7171
return sb.options.Logger
7272
}
7373

bench/main.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"flag"
77
"fmt"
88
"log"
9+
"log/slog"
910
"os"
1011
"sync"
1112
"time"
@@ -38,7 +39,7 @@ func main() {
3839
defer cancel()
3940

4041
mm := newMemMetrics()
41-
ba := getBackend(*b, backend.WithLogger(&nullLogger{}), backend.WithMetrics(mm))
42+
ba := getBackend(*b, backend.WithLogger(slog.New(&nullHandler{})), backend.WithMetrics(mm))
4243

4344
wo := worker.DefaultWorkerOptions
4445
wo.WorkflowExecutorCacheSize = *cacheSize

bench/nooplog.go

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,31 @@
11
package main
22

3-
import "github.com/cschleiden/go-workflows/log"
3+
import (
4+
"context"
5+
"log/slog"
6+
)
47

5-
type nullLogger struct {
6-
defaultFields []interface{}
8+
type nullHandler struct {
79
}
810

9-
// Debug implements log.Logger
10-
func (*nullLogger) Debug(msg string, fields ...interface{}) {
11+
// Enabled implements slog.Handler.
12+
func (*nullHandler) Enabled(context.Context, slog.Level) bool {
13+
return false
1114
}
1215

13-
// Error implements log.Logger
14-
func (*nullLogger) Error(msg string, fields ...interface{}) {
16+
// Handle implements slog.Handler.
17+
func (*nullHandler) Handle(context.Context, slog.Record) error {
18+
return nil
1519
}
1620

17-
// Panic implements log.Logger
18-
func (*nullLogger) Panic(msg string, fields ...interface{}) {
19-
}
20-
21-
// Warn implements log.Logger
22-
func (*nullLogger) Warn(msg string, fields ...interface{}) {
21+
// WithAttrs implements slog.Handler.
22+
func (nl *nullHandler) WithAttrs(attrs []slog.Attr) slog.Handler {
23+
return nl
2324
}
2425

25-
// With implements log.Logger
26-
func (nl *nullLogger) With(fields ...interface{}) log.Logger {
26+
// WithGroup implements slog.Handler.
27+
func (nl *nullHandler) WithGroup(name string) slog.Handler {
2728
return nl
2829
}
2930

30-
var _ log.Logger = (*nullLogger)(nil)
31+
var _ slog.Handler = (*nullHandler)(nil)

0 commit comments

Comments
 (0)