Skip to content

Commit d178e23

Browse files
feat(ARCO-295): new log level in p2p (#695)
1 parent 026e0c2 commit d178e23

File tree

9 files changed

+35
-10
lines changed

9 files changed

+35
-10
lines changed

cmd/arc/services/blocktx.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,10 @@ func StartBlockTx(logger *slog.Logger, arcConfig *config.ArcConfig) (func(), err
165165
peerOpts = append(peerOpts, p2p.WithUserAgent("ARC", version.Version))
166166
}
167167

168+
if arcConfig.LogLevel != arcConfig.PeerLogLevel {
169+
peerOpts = append(peerOpts, p2p.WithLogLevel(arcConfig.PeerLogLevel, arcConfig.LogFormat))
170+
}
171+
168172
for i, peerSetting := range arcConfig.Broadcasting.Unicast.Peers {
169173
peerURL, err := peerSetting.GetP2PUrl()
170174
if err != nil {

cmd/arc/services/metamorph.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,10 @@ func initPeerManager(logger *slog.Logger, s store.MetamorphStore, arcConfig *con
296296
peerOpts = append(peerOpts, p2p.WithUserAgent("ARC", version.Version))
297297
}
298298

299+
if arcConfig.LogLevel != arcConfig.PeerLogLevel {
300+
peerOpts = append(peerOpts, p2p.WithLogLevel(arcConfig.PeerLogLevel, arcConfig.LogFormat))
301+
}
302+
299303
l := logger.With(slog.String("module", "peer"))
300304
for _, peerSetting := range arcConfig.Broadcasting.Unicast.Peers {
301305
peerURL, err := peerSetting.GetP2PUrl()

config/config.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const (
1414

1515
type ArcConfig struct {
1616
LogLevel string `mapstructure:"logLevel"`
17+
PeerLogLevel string `mapstructure:"peerLogLevel"`
1718
LogFormat string `mapstructure:"logFormat"`
1819
ProfilerAddr string `mapstructure:"profilerAddr"`
1920
Prometheus *PrometheusConfig `mapstructure:"prometheus"`

config/defaults.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
func getDefaultArcConfig() *ArcConfig {
1010
return &ArcConfig{
1111
LogLevel: "DEBUG",
12+
PeerLogLevel: "DEBUG",
1213
LogFormat: "text",
1314
ProfilerAddr: "", // optional
1415
Prometheus: getDefaultPrometheusConfig(),

config/example_config.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
2-
logLevel: DEBUG # mode of logging. Value can be one of DEBUG | INFO | WARN | ERROR
32
logFormat: text # format of logging. Value can be one of text | json | tint
3+
logLevel: DEBUG # mode of logging. Value can be one of DEBUG | INFO | WARN | ERROR
4+
peerLogLevel: DEBUG # mode of logging for peer. Value can be one of TRACE | DEBUG | INFO | WARN | ERROR
45
profilerAddr: localhost:9999 # address to start profiler server on (optional)
56
prometheus:
67
enabled: false # if true, then prometheus metrics are enabled

internal/logger/logger.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ func getSlogLevel(logLevel string) (slog.Level, error) {
4747
return slog.LevelError, nil
4848
case "DEBUG":
4949
return slog.LevelDebug, nil
50+
case "TRACE":
51+
return slog.LevelDebug - 4, nil // simulate trace level
5052
}
5153

5254
return slog.LevelInfo, errors.Join(ErrLoggerInvalidLogLevel, fmt.Errorf("log level: %s", logLevel))

internal/p2p/peer.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,9 @@ type Peer struct {
5959
}
6060

6161
func NewPeer(logger *slog.Logger, msgHandler MessageHandlerI, address string, network wire.BitcoinNet, options ...PeerOptions) *Peer {
62-
l := logger.With(
63-
slog.Group("peer",
64-
slog.String("network", network.String()),
65-
slog.String("address", address),
66-
),
67-
)
68-
6962
p := &Peer{
7063
dial: net.Dial,
71-
l: l,
64+
l: logger,
7265
mh: msgHandler,
7366

7467
address: address,
@@ -88,6 +81,13 @@ func NewPeer(logger *slog.Logger, msgHandler MessageHandlerI, address string, ne
8881
opt(p)
8982
}
9083

84+
p.l = p.l.With(
85+
slog.Group("peer",
86+
slog.String("network", network.String()),
87+
slog.String("address", address),
88+
),
89+
)
90+
9191
if p.writeCh == nil {
9292
p.writeCh = make(chan wire.Message, 128)
9393
}

internal/p2p/peer_options.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"net"
55
"time"
66

7+
"github.com/bitcoin-sv/arc/internal/logger"
78
"github.com/libsv/go-p2p/wire"
89
)
910

@@ -46,3 +47,13 @@ func WithDialer(dial func(network, address string) (net.Conn, error)) PeerOption
4647
p.dial = dial
4748
}
4849
}
50+
51+
func WithLogLevel(level, logFormat string) PeerOptions {
52+
return func(p *Peer) {
53+
l, err := logger.NewLogger(level, logFormat)
54+
if err != nil {
55+
l, _ = logger.NewLogger("DEBUG", "json")
56+
}
57+
p.l = l
58+
}
59+
}

test/config/config.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
2-
logLevel: INFO
32
logFormat: tint
3+
logLevel: INFO
4+
peerLogLevel: DEBUG
45
profilerAddr: localhost:9999
56
prometheus:
67
enabled: true

0 commit comments

Comments
 (0)