Silence NioClient and NioClientManager loggers

This commit is contained in:
Dominykas Mostauskis 2020-02-21 23:37:13 +02:00
parent 65177fcc4c
commit 08cd31b242
No known key found for this signature in database
GPG key ID: B5DA7DD87C5D5FB0

View file

@ -7,6 +7,7 @@ import org.bitcoinj.core.PeerAddress;
import org.bitcoinj.core.VersionMessage; import org.bitcoinj.core.VersionMessage;
import org.bitcoinj.core.listeners.PeerDisconnectedEventListener; import org.bitcoinj.core.listeners.PeerDisconnectedEventListener;
import org.bitcoinj.net.NioClient; import org.bitcoinj.net.NioClient;
import org.bitcoinj.net.NioClientManager;
import org.bitcoinj.params.MainNetParams; import org.bitcoinj.params.MainNetParams;
import javax.inject.Inject; import javax.inject.Inject;
@ -31,6 +32,8 @@ import java.util.concurrent.ExecutionException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.Level;
/** /**
* Detects whether a Bitcoin node is running on localhost and whether it is well configured * Detects whether a Bitcoin node is running on localhost and whether it is well configured
* (meaning it's not pruning and has bloom filters enabled). The class is split into * (meaning it's not pruning and has bloom filters enabled). The class is split into
@ -195,7 +198,15 @@ public class LocalBitcoinNode {
return Optional.empty(); return Optional.empty();
} }
/* We temporarily silence BitcoinJ NioClient's and NioClientManager's loggers,
* because when a local Bitcoin node is not found they pollute console output
* with "connection refused" error messages.
*/
var originalNioClientLoggerLevel = silence(NioClient.class);
var originalNioClientManagerLoggerLevel = silence(NioClientManager.class);
NioClient client; NioClient client;
try { try {
log.info("Initiating attempt to connect to and handshake with a local " log.info("Initiating attempt to connect to and handshake with a local "
+ "Bitcoin node (which may or may not be running) on port {}.", + "Bitcoin node (which may or may not be running) on port {}.",
@ -221,9 +232,27 @@ public class LocalBitcoinNode {
peer.close(); peer.close();
client.closeConnection(); client.closeConnection();
restoreLoggerLevel(NioClient.class, originalNioClientLoggerLevel);
restoreLoggerLevel(NioClientManager.class, originalNioClientManagerLoggerLevel);
return optionalPeerVersionMessage; return optionalPeerVersionMessage;
} }
private static Level silence(Class klass) {
var logger = getLogger(klass);
var originalLevel = logger.getLevel();
logger.setLevel(Level.OFF);
return originalLevel;
}
private static void restoreLoggerLevel(Class klass, Level originalLevel) {
getLogger(klass).setLevel(originalLevel);
}
private static ch.qos.logback.classic.Logger getLogger(Class klass) {
return (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(klass);
}
private ListenableFuture<VersionMessage> getVersionMessage(Peer peer) { private ListenableFuture<VersionMessage> getVersionMessage(Peer peer) {
SettableFuture<VersionMessage> peerVersionMessageFuture = SettableFuture.create(); SettableFuture<VersionMessage> peerVersionMessageFuture = SettableFuture.create();