]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Add ClientConfig.Slogger
authorMatt Joiner <anacrolix@gmail.com>
Tue, 6 May 2025 06:06:36 +0000 (16:06 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Tue, 6 May 2025 06:06:36 +0000 (16:06 +1000)
client.go
config.go
torrent.go

index 8549a6a3a28ac48a3afea45b43abbba85141008b..62f6aadfff53f2d2f37df0ee4e29f9479a0da2ad 100644 (file)
--- a/client.go
+++ b/client.go
@@ -10,6 +10,7 @@ import (
        "expvar"
        "fmt"
        "io"
+       "log/slog"
        "math"
        "net"
        "net/http"
@@ -62,8 +63,9 @@ type Client struct {
        event  sync.Cond
        closed chansync.SetOnce
 
-       config *ClientConfig
-       logger log.Logger
+       config  *ClientConfig
+       logger  log.Logger
+       slogger *slog.Logger
 
        peerID         PeerID
        defaultStorage *storage.Client
@@ -203,6 +205,10 @@ func (cl *Client) initLogger() {
                logger = logger.WithFilterLevel(log.Debug)
        }
        cl.logger = logger.WithValues(cl)
+       cl.slogger = cl.config.Slogger
+       if cl.slogger == nil {
+               cl.slogger = slog.Default()
+       }
 }
 
 func (cl *Client) announceKey() int32 {
@@ -1389,6 +1395,7 @@ func (cl *Client) newTorrentOpt(opts AddTorrentOpts) (t *Torrent) {
        t.networkingEnabled.Set()
        ihHex := t.InfoHash().HexString()
        t.logger = cl.logger.WithDefaultLevel(log.Debug).WithNames(ihHex).WithContextText(ihHex)
+       t._slogger = cl.slogger
        t.sourcesLogger = t.logger.WithNames("sources")
        if opts.ChunkSize == 0 {
                opts.ChunkSize = defaultChunkSize
index 2f69819c352d46e90848361eac573003a05e17a1..2955f555a3ec00a74ea467c5b70f735f53788afd 100644 (file)
--- a/config.go
+++ b/config.go
@@ -2,6 +2,7 @@ package torrent
 
 import (
        "context"
+       "log/slog"
        "net"
        "net/http"
        "net/url"
@@ -104,8 +105,9 @@ type ClientConfig struct {
        DisableIPv4      bool
        DisableIPv4Peers bool
        // Perform logging and any other behaviour that will help debug.
-       Debug  bool `help:"enable debugging"`
-       Logger log.Logger
+       Debug   bool `help:"enable debugging"`
+       Logger  log.Logger
+       Slogger *slog.Logger
 
        // Used for torrent sources and webseeding if set.
        WebTransport http.RoundTripper
index fda5b8e9bad1f27926096d1c81862e3763b2e8d6..116507fa20fe6f5781df59838824f322e30952d3 100644 (file)
@@ -63,8 +63,9 @@ type Torrent struct {
        connStats ConnStats
        counters  TorrentStatCounters
 
-       cl     *Client
-       logger log.Logger
+       cl       *Client
+       logger   log.Logger
+       _slogger *slog.Logger
 
        networkingEnabled      chansync.Flag
        dataDownloadDisallowed chansync.Flag
@@ -2048,7 +2049,7 @@ func (t *Torrent) startScrapingTrackerWithInfohash(u *url.URL, urlStr string, sh
                        t:               t,
                        lookupTrackerIp: t.cl.config.LookupTrackerIp,
                        stopCh:          make(chan struct{}),
-                       logger:          t.logger.WithNames("tracker").Slogger().With("urlKey", u.String()),
+                       logger:          t.slogger().With("name", "tracker", "urlKey", u.String()),
                }
                go newAnnouncer.Run()
                return newAnnouncer
@@ -3399,5 +3400,5 @@ func (t *Torrent) Complete() chansync.ReadOnlyFlag {
 }
 
 func (t *Torrent) slogger() *slog.Logger {
-       return t.logger.Slogger()
+       return t._slogger
 }