diff --git a/config/config.go b/config/config.go index 4cf2f45f2e..81cfff293d 100644 --- a/config/config.go +++ b/config/config.go @@ -28,14 +28,12 @@ import ( relayv2 "github.com/libp2p/go-libp2p/p2p/protocol/circuitv2/relay" "github.com/libp2p/go-libp2p/p2p/protocol/holepunch" - logging "github.com/ipfs/go-log/v2" ma "github.com/multiformats/go-multiaddr" madns "github.com/multiformats/go-multiaddr-dns" "go.uber.org/fx" + "go.uber.org/fx/fxevent" ) -var log = logging.Logger("p2p-config") - // AddrsFactory is a function that takes a set of multiaddrs we're listening on and // returns the set of multiaddrs we should advertise to the network. type AddrsFactory = bhost.AddrsFactory @@ -187,7 +185,7 @@ func (cfg *Config) addTransports(h host.Host) error { } fxopts := []fx.Option{ - fx.NopLogger, + fx.WithLogger(func() fxevent.Logger { return getFXLogger() }), fx.Provide(tptu.New), fx.Provide(func() network.Multiplexer { return muxer }), fx.Provide(fx.Annotate( diff --git a/config/log.go b/config/log.go new file mode 100644 index 0000000000..3b74c38c7d --- /dev/null +++ b/config/log.go @@ -0,0 +1,28 @@ +package config + +import ( + "strings" + "sync" + + logging "github.com/ipfs/go-log/v2" + "go.uber.org/fx/fxevent" +) + +var log = logging.Logger("p2p-config") + +var ( + fxLogger fxevent.Logger + logInitOnce sync.Once +) + +type fxLogWriter struct{} + +func (l *fxLogWriter) Write(b []byte) (int, error) { + log.Debug(strings.TrimSuffix(string(b), "\n")) + return len(b), nil +} + +func getFXLogger() fxevent.Logger { + logInitOnce.Do(func() { fxLogger = &fxevent.ConsoleLogger{W: &fxLogWriter{}} }) + return fxLogger +}