}
c.legacyPeerImpl = c
c.peerImpl = c
- c.logger = cl.logger.WithDefaultLevel(log.Warning).WithContextText(fmt.Sprintf("%T %p", c, c))
- c.protocolLogger = c.logger.WithNames(protocolLoggingName)
+ c.setPeerLoggers(cl.logger, cl.slogger)
c.setRW(connStatsReadWriter{nc, c})
c.r = &rateLimitedReader{
l: cl.config.DownloadRateLimiter,
"errors"
"fmt"
"io"
+ "log/slog"
"math/rand"
"net"
"net/netip"
})
}
-func (c *Peer) setTorrent(t *Torrent) {
+func (c *PeerConn) setTorrent(t *Torrent) {
if c.t != nil {
panic("connection already associated with a torrent")
}
c.t = t
c.logger.WithDefaultLevel(log.Debug).Printf("set torrent=%v", t)
- t.reconcileHandshakeStats(c)
+ c.setPeerLoggers(t.logger, t.slogger())
+ t.reconcileHandshakeStats(c.peerPtr())
}
func (c *PeerConn) pexPeerFlags() pp.PexPeerFlags {
func (cn *PeerConn) nominalMaxRequests() maxRequests {
return max(1, min(cn.PeerMaxRequests, cn.peakRequests*2, maxLocalToRemoteRequests))
}
+
+// Set the Peer loggers. This is given Client loggers, and later Torrent loggers when the Torrent is
+// set.
+func (me *PeerConn) setPeerLoggers(a log.Logger, s *slog.Logger) {
+ me.Peer.logger = a.WithDefaultLevel(log.Warning).WithContextText(fmt.Sprintf("%T %p", me, me))
+ me.Peer.slogger = s.With(fmt.Sprintf("%T", me), fmt.Sprintf("%p", me))
+ me.protocolLogger = me.logger.WithNames(protocolLoggingName)
+}
f(&ws.peer)
}
ws.peer.logger = t.logger.WithContextValue(&ws).WithNames("webseed")
+ ws.peer.slogger = t.slogger().With("webseed", url)
// TODO: Abstract out a common struct initializer for this...
ws.peer.legacyPeerImpl = &ws
ws.peer.peerImpl = &ws
}
ws.activeRequests[&wsReq] = struct{}{}
ws.peer.t.cl.numWebSeedRequests++
- ws.peer.logger.Slogger().Debug(
+ ws.slogger().Debug(
"starting webseed request",
"begin", begin,
"end", end,
}
func (me *webseedPeer) slogger() *slog.Logger {
- return me.peer.logger.Slogger()
+ return me.peer.slogger
}