Refactor logging configuration to reduce verbosity and improve peer discovery events

This commit is contained in:
sumanjeet0012@gmail.com
2025-07-14 01:38:15 +05:30
parent 9669a92976
commit 9e76940e75
2 changed files with 23 additions and 19 deletions

View File

@ -19,14 +19,19 @@ handler.setFormatter(
) )
logger.addHandler(handler) logger.addHandler(handler)
# Set root logger to DEBUG to capture all logs # Configure root logger to only show warnings and above to reduce noise
logging.getLogger().setLevel(logging.DEBUG) # This prevents verbose DEBUG messages from multiaddr, DNS, etc.
logging.getLogger().setLevel(logging.WARNING)
# Specifically silence noisy libraries
logging.getLogger("multiaddr").setLevel(logging.WARNING)
logging.getLogger("root").setLevel(logging.WARNING)
def on_peer_discovery(peer_info: PeerInfo) -> None: def on_peer_discovery(peer_info: PeerInfo) -> None:
"""Handler for peer discovery events.""" """Handler for peer discovery events."""
logger.info(f"🔍 Discovered peer: {peer_info.peer_id}") logger.info(f"🔍 Discovered peer: {peer_info.peer_id}")
logger.info(f" Addresses: {[str(addr) for addr in peer_info.addrs]}") logger.debug(f" Addresses: {[str(addr) for addr in peer_info.addrs]}")
# Example bootstrap peers # Example bootstrap peers

View File

@ -1,13 +1,15 @@
import logging import logging
from multiaddr import Multiaddr from multiaddr import Multiaddr
from multiaddr.resolvers import DNSResolver
from libp2p.abc import INetworkService from libp2p.abc import ID, INetworkService, PeerInfo
from libp2p.discovery.bootstrap.utils import validate_bootstrap_addresses from libp2p.discovery.bootstrap.utils import validate_bootstrap_addresses
from libp2p.discovery.events.peerDiscovery import peerDiscovery from libp2p.discovery.events.peerDiscovery import peerDiscovery
from libp2p.peer.peerinfo import info_from_p2p_addr from libp2p.peer.peerinfo import info_from_p2p_addr
logger = logging.getLogger("libp2p.discovery.bootstrap") logger = logging.getLogger("libp2p.discovery.bootstrap")
resolver = DNSResolver()
class BootstrapDiscovery: class BootstrapDiscovery:
@ -51,27 +53,24 @@ class BootstrapDiscovery:
logger.debug(f"Invalid multiaddr format '{addr_str}': {e}") logger.debug(f"Invalid multiaddr format '{addr_str}': {e}")
return return
if self.is_dns_addr(multiaddr): if self.is_dns_addr(multiaddr):
resolved_addrs = await multiaddr.resolve() resolved_addrs = await resolver.resolve(multiaddr)
for resolved_addr in resolved_addrs: peer_id_str = multiaddr.get_peer_id()
if resolved_addr == multiaddr: if peer_id_str is None:
return logger.warning(f"Missing peer ID in DNS address: {addr_str}")
self.add_addr(Multiaddr(resolved_addr)) return
peer_id = ID.from_base58(peer_id_str)
self.add_addr(multiaddr) addrs = [addr for addr in resolved_addrs]
peer_info = PeerInfo(peer_id, addrs)
self.add_addr(peer_info)
else:
self.add_addr(info_from_p2p_addr(multiaddr))
def is_dns_addr(self, addr: Multiaddr) -> bool: def is_dns_addr(self, addr: Multiaddr) -> bool:
"""Check if the address is a DNS address.""" """Check if the address is a DNS address."""
return any(protocol.name == "dnsaddr" for protocol in addr.protocols()) return any(protocol.name == "dnsaddr" for protocol in addr.protocols())
def add_addr(self, addr: Multiaddr) -> None: def add_addr(self, peer_info: PeerInfo) -> None:
"""Add a peer to the peerstore and emit discovery event.""" """Add a peer to the peerstore and emit discovery event."""
# Extract peer info from multiaddr
try:
peer_info = info_from_p2p_addr(addr)
except Exception as e:
logger.debug(f"Failed to extract peer info from '{addr}': {e}")
return
# Skip if it's our own peer # Skip if it's our own peer
if peer_info.peer_id == self.swarm.get_peer_id(): if peer_info.peer_id == self.swarm.get_peer_id():
logger.debug(f"Skipping own peer ID: {peer_info.peer_id}") logger.debug(f"Skipping own peer ID: {peer_info.peer_id}")