Integrated logging with Pion (#341)

* Integrated logging with Pion

* handle nil logger
This commit is contained in:
David Zhao
2022-01-14 17:44:28 -08:00
committed by GitHub
parent cd9c125414
commit f2f776931f
5 changed files with 96 additions and 7 deletions
+3 -3
View File
@@ -28,7 +28,7 @@ require (
github.com/pion/stun v0.3.5
github.com/pion/transport v0.13.0
github.com/pion/turn/v2 v2.0.6
github.com/pion/webrtc/v3 v3.1.14-0.20220107154618-d4b645635c44
github.com/pion/webrtc/v3 v3.1.15
github.com/pkg/errors v0.9.1
github.com/prometheus/client_golang v1.11.0
github.com/rs/cors v1.8.2
@@ -59,7 +59,7 @@ require (
github.com/mattn/go-runewidth v0.0.9 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
github.com/pion/datachannel v1.5.2 // indirect
github.com/pion/dtls/v2 v2.0.13 // indirect
github.com/pion/dtls/v2 v2.1.0 // indirect
github.com/pion/mdns v0.0.5 // indirect
github.com/pion/randutil v0.1.0 // indirect
github.com/pion/sctp v1.8.2 // indirect
@@ -72,7 +72,7 @@ require (
github.com/russross/blackfriday/v2 v2.1.0 // indirect
go.uber.org/atomic v1.7.0 // indirect
go.uber.org/multierr v1.6.0 // indirect
golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871 // indirect
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3 // indirect
golang.org/x/mod v0.5.1 // indirect
golang.org/x/net v0.0.0-20211216030914-fe4d6282115f // indirect
golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359 // indirect
+6 -4
View File
@@ -170,8 +170,9 @@ github.com/onsi/gomega v1.17.0 h1:9Luw4uT5HTjHTN8+aNcSThgH1vdXnmdJ8xIfZ4wyTRE=
github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
github.com/pion/datachannel v1.5.2 h1:piB93s8LGmbECrpO84DnkIVWasRMk3IimbcXkTQLE6E=
github.com/pion/datachannel v1.5.2/go.mod h1:FTGQWaHrdCwIJ1rw6xBIfZVkslikjShim5yr05XFuCQ=
github.com/pion/dtls/v2 v2.0.13 h1:toLgXzq42/MEmfgkXDfzdnwLHMi4tfycaQPGkv9tzRE=
github.com/pion/dtls/v2 v2.0.13/go.mod h1:OaE7eTM+ppaUhJ99OTO4aHl9uY6vPrT1gPY27uNTxRY=
github.com/pion/dtls/v2 v2.1.0 h1:g6gtKVNLp6URDkv9OijFJl16kqGHzVzZG+Fa4A38GTY=
github.com/pion/dtls/v2 v2.1.0/go.mod h1:qG3gA7ZPZemBqpEFqRKyURYdKEwFZQCGb7gv9T3ON3Y=
github.com/pion/ice/v2 v2.1.18 h1:mDzd+iPKJmU30p4Kb+RPjK9olORLqJmQdiTUnVba50g=
github.com/pion/ice/v2 v2.1.18/go.mod h1:9jDr0iIUg8P6+0Jq8QJ/eFSkX3JnsPd293TjCdkfpTs=
github.com/pion/interceptor v0.1.4 h1:qL2xrdR6taLkVxEQj39btwEPRO3i9yd/olEw6+20dag=
@@ -205,8 +206,8 @@ github.com/pion/turn/v2 v2.0.6 h1:AsXjSPR6Im15DMTB39NlfdTY9BQfieANPBjdg/aVNwY=
github.com/pion/turn/v2 v2.0.6/go.mod h1:+y7xl719J8bAEVpSXBXvTxStjJv3hbz9YFflvkpcGPw=
github.com/pion/udp v0.1.1 h1:8UAPvyqmsxK8oOjloDk4wUt63TzFe9WEJkg5lChlj7o=
github.com/pion/udp v0.1.1/go.mod h1:6AFo+CMdKQm7UiA0eUPA8/eVCTx8jBIITLZHc9DWX5M=
github.com/pion/webrtc/v3 v3.1.14-0.20220107154618-d4b645635c44 h1:iyFRWBUrSxF8EHUtcvioKBzm1hOB/F15Zph93+7MWro=
github.com/pion/webrtc/v3 v3.1.14-0.20220107154618-d4b645635c44/go.mod h1:Vn1lK5z9AEmabct0TirkWdt67kpzd40KrpkxPIvQfgE=
github.com/pion/webrtc/v3 v3.1.15 h1:JUNR95xdhcRliAaUQjnuttFPdxGxW/ixcwnHRjQFWOU=
github.com/pion/webrtc/v3 v3.1.15/go.mod h1:2brQHPJl93QVgbcVElY5syrrEzx5PXCxjrQ5g7Hwky8=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@@ -284,8 +285,9 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871 h1:/pEO3GD/ABYAjuakUS6xSEmmlyVS4kxBNkeA9tLJiTI=
golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3 h1:0es+/5331RGQPcXlMfP+WrnIIS6dNnNRe0WB02W0F4M=
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
+77
View File
@@ -0,0 +1,77 @@
package rtc
import (
"fmt"
"github.com/go-logr/logr"
"github.com/pion/logging"
)
// implements webrtc.LoggerFactory
type loggerFactory struct {
logger logr.Logger
}
func newLoggerFactory(logger logr.Logger) *loggerFactory {
if logger.GetSink() == nil {
return nil
}
return &loggerFactory{
logger: logger,
}
}
func (f *loggerFactory) NewLogger(scope string) logging.LeveledLogger {
return &logAdapter{
logger: f.logger.WithName(scope),
// treat info as debug
verbosity: 1,
}
}
// implements webrtc.LeveledLogger
type logAdapter struct {
logger logr.Logger
// 0 - most verbose
verbosity int
}
func (l *logAdapter) Trace(msg string) {
l.Tracef(msg)
}
func (l *logAdapter) Tracef(format string, args ...interface{}) {
l.logger.V(2 + l.verbosity).Info(fmt.Sprintf(format, args...))
}
func (l *logAdapter) Debug(msg string) {
l.Debugf(msg)
}
func (l *logAdapter) Debugf(format string, args ...interface{}) {
l.logger.V(1 + l.verbosity).Info(fmt.Sprintf(format, args...))
}
func (l *logAdapter) Info(msg string) {
l.Infof(msg)
}
func (l *logAdapter) Infof(format string, args ...interface{}) {
l.logger.V(l.verbosity).Info(fmt.Sprintf(format, args...))
}
func (l *logAdapter) Warn(msg string) {
l.Warnf(msg)
}
func (l *logAdapter) Warnf(format string, args ...interface{}) {
l.logger.Info(fmt.Sprintf(format, args...))
}
func (l *logAdapter) Error(msg string) {
l.Errorf(msg)
}
func (l *logAdapter) Errorf(format string, args ...interface{}) {
l.logger.Error(nil, fmt.Sprintf(format, args...))
}
+5
View File
@@ -7,6 +7,7 @@ import (
"time"
"github.com/bep/debounce"
"github.com/go-logr/logr"
"github.com/livekit/protocol/livekit"
"github.com/livekit/protocol/logger"
"github.com/pion/interceptor"
@@ -84,6 +85,10 @@ func newPeerConnection(params TransportParams) (*webrtc.PeerConnection, *webrtc.
se := params.Config.SettingEngine
se.DisableMediaEngineCopy(true)
lf := newLoggerFactory(logr.Logger(params.Logger))
if lf != nil {
se.LoggerFactory = lf
}
ir := &interceptor.Registry{}
if params.Target == livekit.SignalTarget_SUBSCRIBER {
+5
View File
@@ -229,6 +229,11 @@ func (d *DownTrack) Kind() webrtc.RTPCodecType {
return d.kind
}
// RID is required by `webrtc.TrackLocal` interface
func (d *DownTrack) RID() string {
return ""
}
func (d *DownTrack) SSRC() uint32 {
return d.ssrc
}