Merge bitcoin/bitcoin#29641: scripted-diff: Use LogInfo over LogPrintf

fa4395dffd refactor: Remove unused LogPrintf (MarcoFalke)
fa05181d90 scripted-diff: LogPrintf -> LogInfo (MarcoFalke)

Pull request description:

  `LogPrintf` has many issues:

  * It does not mention the log severity (info).
  * It is a deprecated alias for `LogInfo`, according to the dev notes.
  * It wastes review cycles, because reviewers sometimes point out that it is deprecated.
  * It makes the code inconsistent, when both versions of the alias are used.

  Fix all issues by removing the deprecated alias.

ACKs for top commit:
  ajtowns:
    ACK fa4395dffd
  stickies-v:
    ACK fa4395dffd
  rkrux:
    lgtm ACK fa4395dffd

Tree-SHA512: de95d56df27b9ee33548cc7ee7595e2d253474094473089ee67787ddb171384383c683142672c3e2c1984e19eee629b2c469dc85713640a73391610581edbdbe
This commit is contained in:
merge-script committed 2025-12-06 13:47:44 +00:00
commit 89dc82295e
17 files changed
+61 -67

No files matched your search

+1 -2
View File
@@ -752,8 +752,7 @@ logging messages. They should be used as follows:
messages or for infrequent and important events such as a new block tip messages or for infrequent and important events such as a new block tip
being found or a new outbound connection being made. These log messages being found or a new outbound connection being made. These log messages
are unconditional, so care must be taken that they can't be used by an are unconditional, so care must be taken that they can't be used by an
attacker to fill up storage. Note that `LogPrintf(fmt, params...)` is attacker to fill up storage.
a deprecated alias for `LogInfo`.
- `LogError(fmt, params...)` should be used in place of `LogInfo` for - `LogError(fmt, params...)` should be used in place of `LogInfo` for
severe problems that require the node (or a subsystem) to shut down severe problems that require the node (or a subsystem) to shut down
+2 -2
View File
@@ -860,7 +860,7 @@ void ArgsManager::logArgsPrefix(
std::optional<unsigned int> flags = GetArgFlags('-' + arg.first); std::optional<unsigned int> flags = GetArgFlags('-' + arg.first);
if (flags) { if (flags) {
std::string value_str = (*flags & SENSITIVE) ? "****" : value.write(); std::string value_str = (*flags & SENSITIVE) ? "****" : value.write();
LogPrintf("%s %s%s=%s\n", prefix, section_str, arg.first, value_str); LogInfo("%s %s%s=%s\n", prefix, section_str, arg.first, value_str);
} }
} }
} }
@@ -873,7 +873,7 @@ void ArgsManager::LogArgs() const
logArgsPrefix("Config file arg:", section.first, section.second); logArgsPrefix("Config file arg:", section.first, section.second);
} }
for (const auto& setting : m_settings.rw_settings) { for (const auto& setting : m_settings.rw_settings) {
LogPrintf("Setting file arg: %s = %s\n", setting.first, setting.second.write()); LogInfo("Setting file arg: %s = %s\n", setting.first, setting.second.write());
} }
logArgsPrefix("Command-line arg:", "", m_settings.command_line_options); logArgsPrefix("Command-line arg:", "", m_settings.command_line_options);
} }
+1 -1
View File
@@ -192,7 +192,7 @@ bool ArgsManager::ReadConfigFiles(std::string& error, bool ignore_invalid_keys)
if (!ReadConfigStream(conf_file_stream, conf_file_name, error, ignore_invalid_keys)) { if (!ReadConfigStream(conf_file_stream, conf_file_name, error, ignore_invalid_keys)) {
return false; return false;
} }
LogPrintf("Included configuration file %s\n", conf_file_name); LogInfo("Included configuration file %s\n", conf_file_name);
} else { } else {
error = "Failed to include configuration file " + conf_file_name; error = "Failed to include configuration file " + conf_file_name;
return false; return false;
+1 -1
View File
@@ -30,7 +30,7 @@ BCLog::Logger& LogInstance()
* cleaned up by the OS/libc. Defining a logger as a global object doesn't work * cleaned up by the OS/libc. Defining a logger as a global object doesn't work
* since the order of destruction of static/global objects is undefined. * since the order of destruction of static/global objects is undefined.
* Consider if the logger gets destroyed, and then some later destructor calls * Consider if the logger gets destroyed, and then some later destructor calls
* LogPrintf, maybe indirectly, and you get a core dump at shutdown trying to * LogInfo, maybe indirectly, and you get a core dump at shutdown trying to
* access the logger. When the shutdown sequence is fully audited and tested, * access the logger. When the shutdown sequence is fully audited and tested,
* explicit destruction of these objects can be implemented by changing this * explicit destruction of these objects can be implemented by changing this
* from a raw pointer to a std::unique_ptr. * from a raw pointer to a std::unique_ptr.
-3
View File
@@ -369,9 +369,6 @@ inline void LogPrintFormatInternal(std::source_location&& source_loc, BCLog::Log
#define LogWarning(...) LogPrintLevel_(BCLog::LogFlags::ALL, BCLog::Level::Warning, /*should_ratelimit=*/true, __VA_ARGS__) #define LogWarning(...) LogPrintLevel_(BCLog::LogFlags::ALL, BCLog::Level::Warning, /*should_ratelimit=*/true, __VA_ARGS__)
#define LogError(...) LogPrintLevel_(BCLog::LogFlags::ALL, BCLog::Level::Error, /*should_ratelimit=*/true, __VA_ARGS__) #define LogError(...) LogPrintLevel_(BCLog::LogFlags::ALL, BCLog::Level::Error, /*should_ratelimit=*/true, __VA_ARGS__)
// Deprecated unconditional logging.
#define LogPrintf(...) LogInfo(__VA_ARGS__)
// Use a macro instead of a function for conditional logging to prevent // Use a macro instead of a function for conditional logging to prevent
// evaluating arguments when logging for the category is not enabled. // evaluating arguments when logging for the category is not enabled.
+1 -1
View File
@@ -53,7 +53,7 @@ public:
const std::string full_msg = this->LogMsg(msg); const std::string full_msg = this->LogMsg(msg);
if (m_log_category == BCLog::LogFlags::ALL) { if (m_log_category == BCLog::LogFlags::ALL) {
LogPrintf("%s\n", full_msg); LogInfo("%s\n", full_msg);
} else { } else {
LogDebug(m_log_category, "%s\n", full_msg); LogDebug(m_log_category, "%s\n", full_msg);
} }
+28 -28
View File
@@ -287,7 +287,7 @@ bool AddLocal(const CService& addr_, int nScore)
if (!g_reachable_nets.Contains(addr)) if (!g_reachable_nets.Contains(addr))
return false; return false;
LogPrintf("AddLocal(%s,%i)\n", addr.ToStringAddrPort(), nScore); LogInfo("AddLocal(%s,%i)\n", addr.ToStringAddrPort(), nScore);
{ {
LOCK(g_maplocalhost_mutex); LOCK(g_maplocalhost_mutex);
@@ -310,7 +310,7 @@ bool AddLocal(const CNetAddr &addr, int nScore)
void RemoveLocal(const CService& addr) void RemoveLocal(const CService& addr)
{ {
LOCK(g_maplocalhost_mutex); LOCK(g_maplocalhost_mutex);
LogPrintf("RemoveLocal(%s)\n", addr.ToStringAddrPort()); LogInfo("RemoveLocal(%s)\n", addr.ToStringAddrPort());
mapLocalHost.erase(addr); mapLocalHost.erase(addr);
} }
@@ -421,7 +421,7 @@ CNode* CConnman::ConnectNode(CAddress addrConnect,
// It is possible that we already have a connection to the IP/port pszDest resolved to. // It is possible that we already have a connection to the IP/port pszDest resolved to.
// In that case, drop the connection that was just created. // In that case, drop the connection that was just created.
if (AlreadyConnectedToAddressPort(addrConnect)) { if (AlreadyConnectedToAddressPort(addrConnect)) {
LogPrintf("Not opening a connection to %s, already connected to %s\n", pszDest, addrConnect.ToStringAddrPort()); LogInfo("Not opening a connection to %s, already connected to %s\n", pszDest, addrConnect.ToStringAddrPort());
return nullptr; return nullptr;
} }
// Add the address to the resolved addresses vector so we can try to connect to it later on // Add the address to the resolved addresses vector so we can try to connect to it later on
@@ -1739,7 +1739,7 @@ void CConnman::AcceptConnection(const ListenSocket& hListenSocket) {
if (!sock) { if (!sock) {
const int nErr = WSAGetLastError(); const int nErr = WSAGetLastError();
if (nErr != WSAEWOULDBLOCK) { if (nErr != WSAEWOULDBLOCK) {
LogPrintf("socket error accept failed: %s\n", NetworkErrorString(nErr)); LogInfo("socket error accept failed: %s\n", NetworkErrorString(nErr));
} }
return; return;
} }
@@ -1785,7 +1785,7 @@ void CConnman::CreateNodeFromAcceptedSocket(std::unique_ptr<Sock>&& sock,
} }
if (!sock->IsSelectable()) { if (!sock->IsSelectable()) {
LogPrintf("connection from %s dropped: non-selectable socket\n", addr.ToStringAddrPort()); LogInfo("connection from %s dropped: non-selectable socket\n", addr.ToStringAddrPort());
return; return;
} }
@@ -2258,7 +2258,7 @@ void CConnman::ThreadDNSAddressSeed()
if (!gArgs.GetArgs("-seednode").empty()) { if (!gArgs.GetArgs("-seednode").empty()) {
auto start = NodeClock::now(); auto start = NodeClock::now();
constexpr std::chrono::seconds SEEDNODE_TIMEOUT = 30s; constexpr std::chrono::seconds SEEDNODE_TIMEOUT = 30s;
LogPrintf("-seednode enabled. Trying the provided seeds for %d seconds before defaulting to the dnsseeds.\n", SEEDNODE_TIMEOUT.count()); LogInfo("-seednode enabled. Trying the provided seeds for %d seconds before defaulting to the dnsseeds.\n", SEEDNODE_TIMEOUT.count());
while (!m_interrupt_net->interrupted()) { while (!m_interrupt_net->interrupted()) {
if (!m_interrupt_net->sleep_for(500ms)) { if (!m_interrupt_net->sleep_for(500ms)) {
return; return;
@@ -2267,13 +2267,13 @@ void CConnman::ThreadDNSAddressSeed()
// Abort if we have spent enough time without reaching our target. // Abort if we have spent enough time without reaching our target.
// Giving seed nodes 30 seconds so this does not become a race against fixedseeds (which triggers after 1 min) // Giving seed nodes 30 seconds so this does not become a race against fixedseeds (which triggers after 1 min)
if (NodeClock::now() > start + SEEDNODE_TIMEOUT) { if (NodeClock::now() > start + SEEDNODE_TIMEOUT) {
LogPrintf("Couldn't connect to enough peers via seed nodes. Handing fetch logic to the DNS seeds.\n"); LogInfo("Couldn't connect to enough peers via seed nodes. Handing fetch logic to the DNS seeds.\n");
break; break;
} }
outbound_connection_count = GetFullOutboundConnCount(); outbound_connection_count = GetFullOutboundConnCount();
if (outbound_connection_count >= SEED_OUTBOUND_CONNECTION_THRESHOLD) { if (outbound_connection_count >= SEED_OUTBOUND_CONNECTION_THRESHOLD) {
LogPrintf("P2P peers available. Finished fetching data from seed nodes.\n"); LogInfo("P2P peers available. Finished fetching data from seed nodes.\n");
break; break;
} }
} }
@@ -2316,7 +2316,7 @@ void CConnman::ThreadDNSAddressSeed()
seeds_right_now += DNSSEEDS_TO_QUERY_AT_ONCE; seeds_right_now += DNSSEEDS_TO_QUERY_AT_ONCE;
if (addrman.Size() > 0) { if (addrman.Size() > 0) {
LogPrintf("Waiting %d seconds before querying DNS seeds.\n", seeds_wait_time.count()); LogInfo("Waiting %d seconds before querying DNS seeds.\n", seeds_wait_time.count());
std::chrono::seconds to_wait = seeds_wait_time; std::chrono::seconds to_wait = seeds_wait_time;
while (to_wait.count() > 0) { while (to_wait.count() > 0) {
// if sleeping for the MANY_PEERS interval, wake up // if sleeping for the MANY_PEERS interval, wake up
@@ -2328,10 +2328,10 @@ void CConnman::ThreadDNSAddressSeed()
if (GetFullOutboundConnCount() >= SEED_OUTBOUND_CONNECTION_THRESHOLD) { if (GetFullOutboundConnCount() >= SEED_OUTBOUND_CONNECTION_THRESHOLD) {
if (found > 0) { if (found > 0) {
LogPrintf("%d addresses found from DNS seeds\n", found); LogInfo("%d addresses found from DNS seeds\n", found);
LogPrintf("P2P peers available. Finished DNS seeding.\n"); LogInfo("P2P peers available. Finished DNS seeding.\n");
} else { } else {
LogPrintf("P2P peers available. Skipped DNS seeding.\n"); LogInfo("P2P peers available. Skipped DNS seeding.\n");
} }
return; return;
} }
@@ -2343,13 +2343,13 @@ void CConnman::ThreadDNSAddressSeed()
// hold off on querying seeds if P2P network deactivated // hold off on querying seeds if P2P network deactivated
if (!fNetworkActive) { if (!fNetworkActive) {
LogPrintf("Waiting for network to be reactivated before querying DNS seeds.\n"); LogInfo("Waiting for network to be reactivated before querying DNS seeds.\n");
do { do {
if (!m_interrupt_net->sleep_for(1s)) return; if (!m_interrupt_net->sleep_for(1s)) return;
} while (!fNetworkActive); } while (!fNetworkActive);
} }
LogPrintf("Loading addresses from DNS seed %s\n", seed); LogInfo("Loading addresses from DNS seed %s\n", seed);
// If -proxy is in use, we make an ADDR_FETCH connection to the DNS resolved peer address // If -proxy is in use, we make an ADDR_FETCH connection to the DNS resolved peer address
// for the base dns seed domain in chainparams // for the base dns seed domain in chainparams
if (HaveNameProxy()) { if (HaveNameProxy()) {
@@ -2385,9 +2385,9 @@ void CConnman::ThreadDNSAddressSeed()
} }
--seeds_right_now; --seeds_right_now;
} }
LogPrintf("%d addresses found from DNS seeds\n", found); LogInfo("%d addresses found from DNS seeds\n", found);
} else { } else {
LogPrintf("Skipping DNS seeds. Enough peers have been found\n"); LogInfo("Skipping DNS seeds. Enough peers have been found\n");
} }
} }
@@ -2568,7 +2568,7 @@ void CConnman::ThreadOpenConnections(const std::vector<std::string> connect, std
constexpr std::chrono::seconds ADD_NEXT_SEEDNODE = 10s; constexpr std::chrono::seconds ADD_NEXT_SEEDNODE = 10s;
if (!add_fixed_seeds) { if (!add_fixed_seeds) {
LogPrintf("Fixed seeds are disabled\n"); LogInfo("Fixed seeds are disabled\n");
} }
while (!m_interrupt_net->interrupted()) { while (!m_interrupt_net->interrupted()) {
@@ -2607,7 +2607,7 @@ void CConnman::ThreadOpenConnections(const std::vector<std::string> connect, std
// It is cheapest to check if enough time has passed first. // It is cheapest to check if enough time has passed first.
if (GetTime<std::chrono::seconds>() > start + std::chrono::minutes{1}) { if (GetTime<std::chrono::seconds>() > start + std::chrono::minutes{1}) {
add_fixed_seeds_now = true; add_fixed_seeds_now = true;
LogPrintf("Adding fixed seeds as 60 seconds have passed and addrman is empty for at least one reachable network\n"); LogInfo("Adding fixed seeds as 60 seconds have passed and addrman is empty for at least one reachable network\n");
} }
// Perform cheap checks before locking a mutex. // Perform cheap checks before locking a mutex.
@@ -2615,7 +2615,7 @@ void CConnman::ThreadOpenConnections(const std::vector<std::string> connect, std
LOCK(m_added_nodes_mutex); LOCK(m_added_nodes_mutex);
if (m_added_node_params.empty()) { if (m_added_node_params.empty()) {
add_fixed_seeds_now = true; add_fixed_seeds_now = true;
LogPrintf("Adding fixed seeds as -dnsseed=0 (or IPv4/IPv6 connections are disabled via -onlynet) and neither -addnode nor -seednode are provided\n"); LogInfo("Adding fixed seeds as -dnsseed=0 (or IPv4/IPv6 connections are disabled via -onlynet) and neither -addnode nor -seednode are provided\n");
} }
} }
@@ -2634,7 +2634,7 @@ void CConnman::ThreadOpenConnections(const std::vector<std::string> connect, std
local.SetInternal("fixedseeds"); local.SetInternal("fixedseeds");
addrman.Add(seed_addrs, local); addrman.Add(seed_addrs, local);
add_fixed_seeds = false; add_fixed_seeds = false;
LogPrintf("Added %d fixed seeds from reachable networks.\n", seed_addrs.size()); LogInfo("Added %d fixed seeds from reachable networks.\n", seed_addrs.size());
} }
} }
@@ -3158,7 +3158,7 @@ bool CConnman::BindListenPort(const CService& addrBind, bilingual_str& strError,
// the program was closed and restarted. // the program was closed and restarted.
if (sock->SetSockOpt(SOL_SOCKET, SO_REUSEADDR, &nOne, sizeof(int)) == SOCKET_ERROR) { if (sock->SetSockOpt(SOL_SOCKET, SO_REUSEADDR, &nOne, sizeof(int)) == SOCKET_ERROR) {
strError = Untranslated(strprintf("Error setting SO_REUSEADDR on socket: %s, continuing anyway", NetworkErrorString(WSAGetLastError()))); strError = Untranslated(strprintf("Error setting SO_REUSEADDR on socket: %s, continuing anyway", NetworkErrorString(WSAGetLastError())));
LogPrintf("%s\n", strError.original); LogInfo("%s\n", strError.original);
} }
// some systems don't have IPV6_V6ONLY but are always v6only; others do have the option // some systems don't have IPV6_V6ONLY but are always v6only; others do have the option
@@ -3167,14 +3167,14 @@ bool CConnman::BindListenPort(const CService& addrBind, bilingual_str& strError,
#ifdef IPV6_V6ONLY #ifdef IPV6_V6ONLY
if (sock->SetSockOpt(IPPROTO_IPV6, IPV6_V6ONLY, &nOne, sizeof(int)) == SOCKET_ERROR) { if (sock->SetSockOpt(IPPROTO_IPV6, IPV6_V6ONLY, &nOne, sizeof(int)) == SOCKET_ERROR) {
strError = Untranslated(strprintf("Error setting IPV6_V6ONLY on socket: %s, continuing anyway", NetworkErrorString(WSAGetLastError()))); strError = Untranslated(strprintf("Error setting IPV6_V6ONLY on socket: %s, continuing anyway", NetworkErrorString(WSAGetLastError())));
LogPrintf("%s\n", strError.original); LogInfo("%s\n", strError.original);
} }
#endif #endif
#ifdef WIN32 #ifdef WIN32
int nProtLevel = PROTECTION_LEVEL_UNRESTRICTED; int nProtLevel = PROTECTION_LEVEL_UNRESTRICTED;
if (sock->SetSockOpt(IPPROTO_IPV6, IPV6_PROTECTION_LEVEL, &nProtLevel, sizeof(int)) == SOCKET_ERROR) { if (sock->SetSockOpt(IPPROTO_IPV6, IPV6_PROTECTION_LEVEL, &nProtLevel, sizeof(int)) == SOCKET_ERROR) {
strError = Untranslated(strprintf("Error setting IPV6_PROTECTION_LEVEL on socket: %s, continuing anyway", NetworkErrorString(WSAGetLastError()))); strError = Untranslated(strprintf("Error setting IPV6_PROTECTION_LEVEL on socket: %s, continuing anyway", NetworkErrorString(WSAGetLastError())));
LogPrintf("%s\n", strError.original); LogInfo("%s\n", strError.original);
} }
#endif #endif
} }
@@ -3188,7 +3188,7 @@ bool CConnman::BindListenPort(const CService& addrBind, bilingual_str& strError,
LogPrintLevel(BCLog::NET, BCLog::Level::Error, "%s\n", strError.original); LogPrintLevel(BCLog::NET, BCLog::Level::Error, "%s\n", strError.original);
return false; return false;
} }
LogPrintf("Bound to %s\n", addrBind.ToStringAddrPort()); LogInfo("Bound to %s\n", addrBind.ToStringAddrPort());
// Listen for incoming connections // Listen for incoming connections
if (sock->Listen(SOMAXCONN) == SOCKET_ERROR) if (sock->Listen(SOMAXCONN) == SOCKET_ERROR)
@@ -3209,13 +3209,13 @@ void Discover()
for (const CNetAddr &addr: GetLocalAddresses()) { for (const CNetAddr &addr: GetLocalAddresses()) {
if (AddLocal(addr, LOCAL_IF)) if (AddLocal(addr, LOCAL_IF))
LogPrintf("%s: %s\n", __func__, addr.ToStringAddr()); LogInfo("%s: %s\n", __func__, addr.ToStringAddr());
} }
} }
void CConnman::SetNetworkActive(bool active) void CConnman::SetNetworkActive(bool active)
{ {
LogPrintf("%s: %s\n", __func__, active); LogInfo("%s: %s\n", __func__, active);
if (fNetworkActive == active) { if (fNetworkActive == active) {
return; return;
@@ -3350,7 +3350,7 @@ bool CConnman::Start(CScheduler& scheduler, const Options& connOptions)
if (m_anchors.size() > MAX_BLOCK_RELAY_ONLY_ANCHORS) { if (m_anchors.size() > MAX_BLOCK_RELAY_ONLY_ANCHORS) {
m_anchors.resize(MAX_BLOCK_RELAY_ONLY_ANCHORS); m_anchors.resize(MAX_BLOCK_RELAY_ONLY_ANCHORS);
} }
LogPrintf("%i block-relay-only anchors will be tried for connections.\n", m_anchors.size()); LogInfo("%i block-relay-only anchors will be tried for connections.\n", m_anchors.size());
} }
if (m_client_interface) { if (m_client_interface) {
@@ -3384,7 +3384,7 @@ bool CConnman::Start(CScheduler& scheduler, const Options& connOptions)
threadSocketHandler = std::thread(&util::TraceThread, "net", [this] { ThreadSocketHandler(); }); threadSocketHandler = std::thread(&util::TraceThread, "net", [this] { ThreadSocketHandler(); });
if (!gArgs.GetBoolArg("-dnsseed", DEFAULT_DNSSEED)) if (!gArgs.GetBoolArg("-dnsseed", DEFAULT_DNSSEED))
LogPrintf("DNS seeding disabled\n"); LogInfo("DNS seeding disabled\n");
else else
threadDNSAddressSeed = std::thread(&util::TraceThread, "dnsseed", [this] { ThreadDNSAddressSeed(); }); threadDNSAddressSeed = std::thread(&util::TraceThread, "dnsseed", [this] { ThreadDNSAddressSeed(); });
+5 -5
View File
@@ -3494,7 +3494,7 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
// Disconnect if we connected to ourself // Disconnect if we connected to ourself
if (pfrom.IsInboundConn() && !m_connman.CheckIncomingNonce(nNonce)) if (pfrom.IsInboundConn() && !m_connman.CheckIncomingNonce(nNonce))
{ {
LogPrintf("connected to self at %s, disconnecting\n", pfrom.addr.ToStringAddrPort()); LogInfo("connected to self at %s, disconnecting\n", pfrom.addr.ToStringAddrPort());
pfrom.fDisconnect = true; pfrom.fDisconnect = true;
return; return;
} }
@@ -3663,7 +3663,7 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
// can be triggered by an attacker at high rate. // can be triggered by an attacker at high rate.
if (!pfrom.IsInboundConn() || LogAcceptCategory(BCLog::NET, BCLog::Level::Debug)) { if (!pfrom.IsInboundConn() || LogAcceptCategory(BCLog::NET, BCLog::Level::Debug)) {
const auto mapped_as{m_connman.GetMappedAS(pfrom.addr)}; const auto mapped_as{m_connman.GetMappedAS(pfrom.addr)};
LogPrintf("New %s %s peer connected: version: %d, blocks=%d, peer=%d%s%s\n", LogInfo("New %s %s peer connected: version: %d, blocks=%d, peer=%d%s%s\n",
pfrom.ConnectionTypeAsString(), pfrom.ConnectionTypeAsString(),
TransportTypeAsString(pfrom.m_transport->GetInfo().transport_type), TransportTypeAsString(pfrom.m_transport->GetInfo().transport_type),
pfrom.nVersion.load(), peer->m_starting_height, pfrom.nVersion.load(), peer->m_starting_height,
@@ -4285,10 +4285,10 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
// permission, even if they were already in the mempool, allowing // permission, even if they were already in the mempool, allowing
// the node to function as a gateway for nodes hidden behind it. // the node to function as a gateway for nodes hidden behind it.
if (!m_mempool.exists(txid)) { if (!m_mempool.exists(txid)) {
LogPrintf("Not relaying non-mempool transaction %s (wtxid=%s) from forcerelay peer=%d\n", LogInfo("Not relaying non-mempool transaction %s (wtxid=%s) from forcerelay peer=%d\n",
txid.ToString(), wtxid.ToString(), pfrom.GetId()); txid.ToString(), wtxid.ToString(), pfrom.GetId());
} else { } else {
LogPrintf("Force relaying tx %s (wtxid=%s) from peer=%d\n", LogInfo("Force relaying tx %s (wtxid=%s) from peer=%d\n",
txid.ToString(), wtxid.ToString(), pfrom.GetId()); txid.ToString(), wtxid.ToString(), pfrom.GetId());
RelayTransaction(txid, wtxid); RelayTransaction(txid, wtxid);
} }
@@ -5236,7 +5236,7 @@ void PeerManagerImpl::CheckForStaleTipAndEvictPeers()
// Check whether our tip is stale, and if so, allow using an extra // Check whether our tip is stale, and if so, allow using an extra
// outbound peer // outbound peer
if (!m_chainman.m_blockman.LoadingBlocks() && m_connman.GetNetworkActive() && m_connman.GetUseAddrmanOutgoing() && TipMayBeStale()) { if (!m_chainman.m_blockman.LoadingBlocks() && m_connman.GetNetworkActive() && m_connman.GetUseAddrmanOutgoing() && TipMayBeStale()) {
LogPrintf("Potential stale tip detected, will try using extra outbound peer (last tip update: %d seconds ago)\n", LogInfo("Potential stale tip detected, will try using extra outbound peer (last tip update: %d seconds ago)\n",
count_seconds(now - m_last_tip_update.load())); count_seconds(now - m_last_tip_update.load()));
m_connman.SetTryNewOutboundPeer(true); m_connman.SetTryNewOutboundPeer(true);
} else if (m_connman.GetTryNewOutboundPeer()) { } else if (m_connman.GetTryNewOutboundPeer()) {
+2 -2
View File
@@ -60,13 +60,13 @@ void BanMapFromJson(const UniValue& bans_json, banmap_t& bans)
for (const auto& ban_entry_json : bans_json.getValues()) { for (const auto& ban_entry_json : bans_json.getValues()) {
const int version{ban_entry_json[BANMAN_JSON_VERSION_KEY].getInt<int>()}; const int version{ban_entry_json[BANMAN_JSON_VERSION_KEY].getInt<int>()};
if (version != CBanEntry::CURRENT_VERSION) { if (version != CBanEntry::CURRENT_VERSION) {
LogPrintf("Dropping entry with unknown version (%s) from ban list\n", version); LogInfo("Dropping entry with unknown version (%s) from ban list\n", version);
continue; continue;
} }
const auto& subnet_str = ban_entry_json[BANMAN_JSON_ADDR_KEY].get_str(); const auto& subnet_str = ban_entry_json[BANMAN_JSON_ADDR_KEY].get_str();
const CSubNet subnet{LookupSubNet(subnet_str)}; const CSubNet subnet{LookupSubNet(subnet_str)};
if (!subnet.IsValid()) { if (!subnet.IsValid()) {
LogPrintf("Dropping entry with unparseable address or subnet (%s) from ban list\n", subnet_str); LogInfo("Dropping entry with unparseable address or subnet (%s) from ban list\n", subnet_str);
continue; continue;
} }
bans.insert_or_assign(subnet, CBanEntry{ban_entry_json}); bans.insert_or_assign(subnet, CBanEntry{ban_entry_json});
+8 -8
View File
@@ -416,7 +416,7 @@ bool Socks5(const std::string& strDest, uint16_t port, const ProxyCredentials* a
sock.SendComplete(vSocks5Init, g_socks5_recv_timeout, g_socks5_interrupt); sock.SendComplete(vSocks5Init, g_socks5_recv_timeout, g_socks5_interrupt);
uint8_t pchRet1[2]; uint8_t pchRet1[2];
if (InterruptibleRecv(pchRet1, 2, g_socks5_recv_timeout, sock) != IntrRecvError::OK) { if (InterruptibleRecv(pchRet1, 2, g_socks5_recv_timeout, sock) != IntrRecvError::OK) {
LogPrintf("Socks5() connect to %s:%d failed: InterruptibleRecv() timeout or other failure\n", strDest, port); LogInfo("Socks5() connect to %s:%d failed: InterruptibleRecv() timeout or other failure\n", strDest, port);
return false; return false;
} }
if (pchRet1[0] != SOCKSVersion::SOCKS5) { if (pchRet1[0] != SOCKSVersion::SOCKS5) {
@@ -543,7 +543,7 @@ std::unique_ptr<Sock> CreateSockOS(int domain, int type, int protocol)
// Ensure that waiting for I/O on this socket won't result in undefined // Ensure that waiting for I/O on this socket won't result in undefined
// behavior. // behavior.
if (!sock->IsSelectable()) { if (!sock->IsSelectable()) {
LogPrintf("Cannot create connection: non-selectable socket created (fd >= FD_SETSIZE ?)\n"); LogInfo("Cannot create connection: non-selectable socket created (fd >= FD_SETSIZE ?)\n");
return nullptr; return nullptr;
} }
@@ -552,14 +552,14 @@ std::unique_ptr<Sock> CreateSockOS(int domain, int type, int protocol)
// Set the no-sigpipe option on the socket for BSD systems, other UNIXes // Set the no-sigpipe option on the socket for BSD systems, other UNIXes
// should use the MSG_NOSIGNAL flag for every send. // should use the MSG_NOSIGNAL flag for every send.
if (sock->SetSockOpt(SOL_SOCKET, SO_NOSIGPIPE, &set, sizeof(int)) == SOCKET_ERROR) { if (sock->SetSockOpt(SOL_SOCKET, SO_NOSIGPIPE, &set, sizeof(int)) == SOCKET_ERROR) {
LogPrintf("Error setting SO_NOSIGPIPE on socket: %s, continuing anyway\n", LogInfo("Error setting SO_NOSIGPIPE on socket: %s, continuing anyway\n",
NetworkErrorString(WSAGetLastError())); NetworkErrorString(WSAGetLastError()));
} }
#endif #endif
// Set the non-blocking option on the socket. // Set the non-blocking option on the socket.
if (!sock->SetNonBlocking()) { if (!sock->SetNonBlocking()) {
LogPrintf("Error setting socket to non-blocking: %s\n", NetworkErrorString(WSAGetLastError())); LogInfo("Error setting socket to non-blocking: %s\n", NetworkErrorString(WSAGetLastError()));
return nullptr; return nullptr;
} }
@@ -585,7 +585,7 @@ static void LogConnectFailure(bool manual_connection, util::ConstevalFormatStrin
{ {
std::string error_message = tfm::format(fmt, args...); std::string error_message = tfm::format(fmt, args...);
if (manual_connection) { if (manual_connection) {
LogPrintf("%s\n", error_message); LogInfo("%s\n", error_message);
} else { } else {
LogDebug(BCLog::NET, "%s\n", error_message); LogDebug(BCLog::NET, "%s\n", error_message);
} }
@@ -605,7 +605,7 @@ static bool ConnectToSocket(const Sock& sock, struct sockaddr* sockaddr, socklen
const Sock::Event requested = Sock::RECV | Sock::SEND; const Sock::Event requested = Sock::RECV | Sock::SEND;
Sock::Event occurred; Sock::Event occurred;
if (!sock.Wait(std::chrono::milliseconds{nConnectTimeout}, requested, &occurred)) { if (!sock.Wait(std::chrono::milliseconds{nConnectTimeout}, requested, &occurred)) {
LogPrintf("wait for connect to %s failed: %s\n", LogInfo("wait for connect to %s failed: %s\n",
dest_str, dest_str,
NetworkErrorString(WSAGetLastError())); NetworkErrorString(WSAGetLastError()));
return false; return false;
@@ -622,7 +622,7 @@ static bool ConnectToSocket(const Sock& sock, struct sockaddr* sockaddr, socklen
socklen_t sockerr_len = sizeof(sockerr); socklen_t sockerr_len = sizeof(sockerr);
if (sock.GetSockOpt(SOL_SOCKET, SO_ERROR, &sockerr, &sockerr_len) == if (sock.GetSockOpt(SOL_SOCKET, SO_ERROR, &sockerr, &sockerr_len) ==
SOCKET_ERROR) { SOCKET_ERROR) {
LogPrintf("getsockopt() for %s failed: %s\n", dest_str, NetworkErrorString(WSAGetLastError())); LogInfo("getsockopt() for %s failed: %s\n", dest_str, NetworkErrorString(WSAGetLastError()));
return false; return false;
} }
if (sockerr != 0) { if (sockerr != 0) {
@@ -658,7 +658,7 @@ std::unique_ptr<Sock> ConnectDirectly(const CService& dest, bool manual_connecti
struct sockaddr_storage sockaddr; struct sockaddr_storage sockaddr;
socklen_t len = sizeof(sockaddr); socklen_t len = sizeof(sockaddr);
if (!dest.GetSockAddr((struct sockaddr*)&sockaddr, &len)) { if (!dest.GetSockAddr((struct sockaddr*)&sockaddr, &len)) {
LogPrintf("Cannot get sockaddr for %s: unsupported network\n", dest.ToStringAddrPort()); LogInfo("Cannot get sockaddr for %s: unsupported network\n", dest.ToStringAddrPort());
return {}; return {};
} }
+1 -1
View File
@@ -124,7 +124,7 @@ void NetGroupManager::ASMapHealthCheck(const std::vector<CNetAddr>& clearnet_add
clearnet_asns.insert(asn); clearnet_asns.insert(asn);
} }
LogPrintf("ASMap Health Check: %i clearnet peers are mapped to %i ASNs with %i peers being unmapped\n", clearnet_addrs.size(), clearnet_asns.size(), unmapped_count); LogInfo("ASMap Health Check: %i clearnet peers are mapped to %i ASNs with %i peers being unmapped\n", clearnet_addrs.size(), clearnet_asns.size(), unmapped_count);
} }
bool NetGroupManager::UsingASMap() const { bool NetGroupManager::UsingASMap() const {
+2 -2
View File
@@ -170,7 +170,7 @@ std::unique_ptr<CBlockTemplate> BlockAssembler::CreateNewBlock()
pblock->vtx[0] = MakeTransactionRef(std::move(coinbaseTx)); pblock->vtx[0] = MakeTransactionRef(std::move(coinbaseTx));
pblocktemplate->vchCoinbaseCommitment = m_chainstate.m_chainman.GenerateCoinbaseCommitment(*pblock, pindexPrev); pblocktemplate->vchCoinbaseCommitment = m_chainstate.m_chainman.GenerateCoinbaseCommitment(*pblock, pindexPrev);
LogPrintf("CreateNewBlock(): block weight: %u txs: %u fees: %ld sigops %d\n", GetBlockWeight(*pblock), nBlockTx, nFees, nBlockSigOpsCost); LogInfo("CreateNewBlock(): block weight: %u txs: %u fees: %ld sigops %d\n", GetBlockWeight(*pblock), nBlockTx, nFees, nBlockSigOpsCost);
// Fill in header // Fill in header
pblock->hashPrevBlock = pindexPrev->GetBlockHash(); pblock->hashPrevBlock = pindexPrev->GetBlockHash();
@@ -227,7 +227,7 @@ void BlockAssembler::AddToBlock(const CTxMemPoolEntry& entry)
nFees += entry.GetFee(); nFees += entry.GetFee();
if (m_options.print_modified_fee) { if (m_options.print_modified_fee) {
LogPrintf("fee rate %s txid %s\n", LogInfo("fee rate %s txid %s\n",
CFeeRate(entry.GetModifiedFee(), entry.GetTxSize()).ToString(), CFeeRate(entry.GetModifiedFee(), entry.GetTxSize()).ToString(),
entry.GetTx().GetHash().ToString()); entry.GetTx().GetHash().ToString());
} }
+1 -3
View File
@@ -142,15 +142,13 @@ BOOST_FIXTURE_TEST_CASE(logging_LogPrintStr, LogSetup)
BOOST_FIXTURE_TEST_CASE(logging_LogPrintMacrosDeprecated, LogSetup) BOOST_FIXTURE_TEST_CASE(logging_LogPrintMacrosDeprecated, LogSetup)
{ {
LogInstance().EnableCategory(BCLog::NET); LogInstance().EnableCategory(BCLog::NET);
LogPrintf("foo5: %s\n", "bar5");
LogPrintLevel(BCLog::NET, BCLog::Level::Trace, "foo4: %s\n", "bar4"); // not logged LogPrintLevel(BCLog::NET, BCLog::Level::Trace, "foo4: %s\n", "bar4"); // not logged
LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "foo7: %s\n", "bar7"); LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "foo7: %s\n", "bar7");
LogPrintLevel(BCLog::NET, BCLog::Level::Info, "foo8: %s\n", "bar8"); LogPrintLevel(BCLog::NET, BCLog::Level::Info, "foo8: %s\n", "bar8");
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "foo9: %s\n", "bar9"); LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "foo9: %s\n", "bar9");
LogPrintLevel(BCLog::NET, BCLog::Level::Error, "foo10: %s\n", "bar10"); LogPrintLevel(BCLog::NET, BCLog::Level::Error, "foo10: %s\n", "bar10");
std::vector<std::string> log_lines{ReadDebugLogLines()}; std::vector<std::string> log_lines{ReadDebugLogLines()};
std::vector<std::string> expected = { std::vector<std::string> expected{
"foo5: bar5",
"[net] foo7: bar7", "[net] foo7: bar7",
"[net:info] foo8: bar8", "[net:info] foo8: bar8",
"[net:warning] foo9: bar9", "[net:warning] foo9: bar9",
+1 -1
View File
@@ -706,7 +706,7 @@ void StartTorControl(CService onion_service_target)
void InterruptTorControl() void InterruptTorControl()
{ {
if (gBase) { if (gBase) {
LogPrintf("tor: Thread interrupt\n"); LogInfo("tor: Thread interrupt\n");
event_base_once(gBase, -1, EV_TIMEOUT, [](evutil_socket_t, short, void*) { event_base_once(gBase, -1, EV_TIMEOUT, [](evutil_socket_t, short, void*) {
event_base_loopbreak(gBase); event_base_loopbreak(gBase);
}, nullptr, nullptr); }, nullptr, nullptr);
+2 -2
View File
@@ -626,9 +626,9 @@ void CTxMemPool::PrioritiseTransaction(const Txid& hash, const CAmount& nFeeDelt
} }
if (delta == 0) { if (delta == 0) {
mapDeltas.erase(hash); mapDeltas.erase(hash);
LogPrintf("PrioritiseTransaction: %s (%sin mempool) delta cleared\n", hash.ToString(), it == mapTx.end() ? "not " : ""); LogInfo("PrioritiseTransaction: %s (%sin mempool) delta cleared\n", hash.ToString(), it == mapTx.end() ? "not " : "");
} else { } else {
LogPrintf("PrioritiseTransaction: %s (%sin mempool) fee += %s, new delta=%s\n", LogInfo("PrioritiseTransaction: %s (%sin mempool) fee += %s, new delta=%s\n",
hash.ToString(), hash.ToString(),
it == mapTx.end() ? "not " : "", it == mapTx.end() ? "not " : "",
FormatMoney(nFeeDelta), FormatMoney(nFeeDelta),
+4 -4
View File
@@ -191,7 +191,7 @@ std::optional<std::vector<int>> CalculatePrevHeights(
? tip.nHeight + 1 // Assume all mempool transaction confirm in the next block. ? tip.nHeight + 1 // Assume all mempool transaction confirm in the next block.
: coin->nHeight; : coin->nHeight;
} else { } else {
LogPrintf("ERROR: %s: Missing input %d in transaction \'%s\'\n", __func__, i, tx.GetHash().GetHex()); LogInfo("ERROR: %s: Missing input %d in transaction \'%s\'\n", __func__, i, tx.GetHash().GetHex());
return std::nullopt; return std::nullopt;
} }
} }
@@ -1987,12 +1987,12 @@ void Chainstate::InvalidChainFound(CBlockIndex* pindexNew)
m_chainman.RecalculateBestHeader(); m_chainman.RecalculateBestHeader();
} }
LogPrintf("%s: invalid block=%s height=%d log2_work=%f date=%s\n", __func__, LogInfo("%s: invalid block=%s height=%d log2_work=%f date=%s\n", __func__,
pindexNew->GetBlockHash().ToString(), pindexNew->nHeight, pindexNew->GetBlockHash().ToString(), pindexNew->nHeight,
log(pindexNew->nChainWork.getdouble())/log(2.0), FormatISO8601DateTime(pindexNew->GetBlockTime())); log(pindexNew->nChainWork.getdouble())/log(2.0), FormatISO8601DateTime(pindexNew->GetBlockTime()));
CBlockIndex *tip = m_chain.Tip(); CBlockIndex *tip = m_chain.Tip();
assert (tip); assert (tip);
LogPrintf("%s: current best=%s height=%d log2_work=%f date=%s\n", __func__, LogInfo("%s: current best=%s height=%d log2_work=%f date=%s\n", __func__,
tip->GetBlockHash().ToString(), m_chain.Height(), log(tip->nChainWork.getdouble())/log(2.0), tip->GetBlockHash().ToString(), m_chain.Height(), log(tip->nChainWork.getdouble())/log(2.0),
FormatISO8601DateTime(tip->GetBlockTime())); FormatISO8601DateTime(tip->GetBlockTime()));
CheckForkWarningConditions(); CheckForkWarningConditions();
@@ -2705,7 +2705,7 @@ CoinsCacheSizeState Chainstate::GetCoinsCacheSizeState(
max_coins_cache_size_bytes + std::max<int64_t>(int64_t(max_mempool_size_bytes) - nMempoolUsage, 0); max_coins_cache_size_bytes + std::max<int64_t>(int64_t(max_mempool_size_bytes) - nMempoolUsage, 0);
if (cacheSize > nTotalSpace) { if (cacheSize > nTotalSpace) {
LogPrintf("Cache size (%s) exceeds total space (%s)\n", cacheSize, nTotalSpace); LogInfo("Cache size (%s) exceeds total space (%s)\n", cacheSize, nTotalSpace);
return CoinsCacheSizeState::CRITICAL; return CoinsCacheSizeState::CRITICAL;
} else if (cacheSize > LargeCoinsCacheThreshold(nTotalSpace)) { } else if (cacheSize > LargeCoinsCacheThreshold(nTotalSpace)) {
return CoinsCacheSizeState::LARGE; return CoinsCacheSizeState::LARGE;
+1 -1
View File
@@ -723,7 +723,7 @@ bool BerkeleyRODatabase::Backup(const std::string& dest) const
} }
fs::copy_file(src, dst, fs::copy_options::overwrite_existing); fs::copy_file(src, dst, fs::copy_options::overwrite_existing);
LogPrintf("copied %s to %s\n", fs::PathToString(m_filepath), fs::PathToString(dst)); LogInfo("copied %s to %s\n", fs::PathToString(m_filepath), fs::PathToString(dst));
return true; return true;
} catch (const fs::filesystem_error& e) { } catch (const fs::filesystem_error& e) {
LogWarning("error copying %s to %s - %s\n", fs::PathToString(m_filepath), fs::PathToString(dst), e.code().message()); LogWarning("error copying %s to %s - %s\n", fs::PathToString(m_filepath), fs::PathToString(dst), e.code().message());