@@ -3,6 +3,7 @@ package totem
3
3
import (
4
4
"context"
5
5
"fmt"
6
+ "io"
6
7
"log"
7
8
"log/slog"
8
9
"reflect"
@@ -24,7 +25,6 @@ type Server struct {
24
25
stream Stream
25
26
lock sync.RWMutex
26
27
controller * StreamController
27
- logger * slog.Logger
28
28
splicedControllers []* StreamController
29
29
tracer trace.Tracer
30
30
@@ -33,6 +33,7 @@ type Server struct {
33
33
}
34
34
35
35
type ServerOptions struct {
36
+ logger * slog.Logger
36
37
name string
37
38
discoveryHopLimit int32
38
39
interceptors InterceptorConfig
@@ -94,16 +95,23 @@ func WithName(name string) ServerOption {
94
95
}
95
96
}
96
97
98
+ func WithLogger (logger * slog.Logger ) ServerOption {
99
+ return func (o * ServerOptions ) {
100
+ o .logger = logger
101
+ }
102
+ }
103
+
104
+ var defaultNoopLogger = slog .New (slog .NewTextHandler (io .Discard , & slog.HandlerOptions {Level : slog .LevelError }))
105
+
97
106
func NewServer (stream Stream , opts ... ServerOption ) (* Server , error ) {
98
107
options := ServerOptions {
99
108
discoveryHopLimit : - 1 ,
109
+ logger : defaultNoopLogger ,
100
110
}
101
111
options .apply (opts ... )
102
112
103
- lg := Log .WithGroup (options .name )
104
-
105
113
ctrl := NewStreamController (stream , StreamControllerOptions {
106
- Logger : lg ,
114
+ Logger : options . logger ,
107
115
Name : options .name ,
108
116
Metrics : options .metrics ,
109
117
WorkerPoolParams : DefaultWorkerPoolParams (),
@@ -120,7 +128,6 @@ func NewServer(stream Stream, opts ...ServerOption) (*Server, error) {
120
128
ServerOptions : options ,
121
129
stream : stream ,
122
130
controller : ctrl ,
123
- logger : lg ,
124
131
setupCtx : setupCtx ,
125
132
setupSpan : span ,
126
133
tracer : tracer ,
0 commit comments