Skip to content

Commit 0e768d8

Browse files
authored
Option to provide logger in ConnectOption. (#876)
Allows logging with proper context during connect.
1 parent dbb96cc commit 0e768d8

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed

room.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,12 @@ func WithDTLSEllipticCurves(curves ...dtlsElliptic.Curve) ConnectOption {
206206
}
207207
}
208208

209+
func WithLogger(l protoLogger.Logger) ConnectOption {
210+
return func(p *signalling.ConnectParams) {
211+
p.Logger = l
212+
}
213+
}
214+
209215
type PLIWriter func(webrtc.SSRC)
210216

211217
type Room struct {
@@ -361,27 +367,31 @@ func (r *Room) JoinWithToken(url, token string, opts ...ConnectOption) error {
361367
opt(params)
362368
}
363369

370+
if params.Logger != nil {
371+
r.SetLogger(params.Logger)
372+
}
373+
364374
isSuccess := false
365375
cloudHostname, _ := parseCloudURL(url)
366376
if !params.DisableRegionDiscovery && cloudHostname != "" {
367377
if err := r.regionURLProvider.RefreshRegionSettings(cloudHostname, token); err != nil {
368-
logger.Errorw("failed to get best url", err)
378+
r.log.Errorw("failed to get best url", err)
369379
} else {
370380
for tries := uint(0); !isSuccess; tries++ {
371381
bestURL, err := r.regionURLProvider.PopBestURL(cloudHostname, token)
372382
if err != nil {
373-
logger.Errorw("failed to get best url", err)
383+
r.log.Errorw("failed to get best url", err)
374384
break
375385
}
376386

377-
logger.Debugw("RTC engine joining room", "url", bestURL, "connectTimeout", params.ConnectTimeout)
387+
r.log.Debugw("RTC engine joining room", "url", bestURL, "connectTimeout", params.ConnectTimeout)
378388
callCtx, cancelCallCtx := context.WithTimeout(ctx, params.ConnectTimeout)
379389
isSuccess, err = r.engine.JoinContext(callCtx, bestURL, token, params)
380390
cancelCallCtx()
381391
if err != nil {
382392
// try the next URL with exponential backoff
383393
d := time.Duration(1<<min(tries, 6)) * 100 * time.Millisecond // max 6.4 seconds
384-
logger.Errorw(
394+
r.log.Errorw(
385395
"failed to join room", err,
386396
"retrying in", d,
387397
"url", bestURL,

signalling/interfaces.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,15 @@ import (
2121

2222
"github.com/livekit/mediatransportutil/pkg/pacer"
2323
"github.com/livekit/protocol/livekit"
24-
protoLogger "github.com/livekit/protocol/logger"
24+
"github.com/livekit/protocol/logger"
2525
dtlsElliptic "github.com/pion/dtls/v3/pkg/crypto/elliptic"
2626
"github.com/pion/interceptor"
2727
"github.com/pion/webrtc/v4"
2828
"google.golang.org/protobuf/proto"
2929
)
3030

3131
type Signalling interface {
32-
SetLogger(l protoLogger.Logger)
32+
SetLogger(l logger.Logger)
3333

3434
Path() string
3535
ValidatePath() string
@@ -94,10 +94,12 @@ type ConnectParams struct {
9494

9595
// internal use
9696
Codecs []webrtc.RTPCodecParameters
97+
98+
Logger logger.Logger
9799
}
98100

99101
type SignalTransport interface {
100-
SetLogger(l protoLogger.Logger)
102+
SetLogger(l logger.Logger)
101103

102104
Start()
103105
IsStarted() bool
@@ -124,7 +126,7 @@ type SignalTransportHandler interface {
124126
}
125127

126128
type SignalHandler interface {
127-
SetLogger(l protoLogger.Logger)
129+
SetLogger(l logger.Logger)
128130

129131
HandleMessage(msg proto.Message) error
130132
}

0 commit comments

Comments
 (0)