diff --git a/driver/clirr-ignored-differences.xml b/driver/clirr-ignored-differences.xml index c0944f7808..662b81680e 100644 --- a/driver/clirr-ignored-differences.xml +++ b/driver/clirr-ignored-differences.xml @@ -19,4 +19,10 @@ java.lang.String agent() + + org/neo4j/driver/Logger + 7012 + void debug(java.lang.String, java.lang.Throwable) + + diff --git a/driver/src/main/java/org/neo4j/driver/Logger.java b/driver/src/main/java/org/neo4j/driver/Logger.java index 3e2989d87f..d30138d289 100644 --- a/driver/src/main/java/org/neo4j/driver/Logger.java +++ b/driver/src/main/java/org/neo4j/driver/Logger.java @@ -103,6 +103,14 @@ public interface Logger */ void debug( String message, Object... params ); + /** + * Logs debug message with throwable. + * + * @param message the message to log + * @param throwable the throwable to include into the log entry + */ + void debug( String message, Throwable throwable ); + /** * Logs binary sent and received by this driver. * It is only enabled when {@link Logger#isTraceEnabled()} returns {@code true}. diff --git a/driver/src/main/java/org/neo4j/driver/internal/async/inbound/InboundMessageDispatcher.java b/driver/src/main/java/org/neo4j/driver/internal/async/inbound/InboundMessageDispatcher.java index dde5d9558b..881c445291 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/async/inbound/InboundMessageDispatcher.java +++ b/driver/src/main/java/org/neo4j/driver/internal/async/inbound/InboundMessageDispatcher.java @@ -186,7 +186,7 @@ public void handleChannelError( Throwable error ) handler.onFailure( currentError ); } - log.debug( "Closing channel because of a failure '%s'", error ); + log.debug( "Closing channel because of a failure", error ); channel.close(); } diff --git a/driver/src/main/java/org/neo4j/driver/internal/logging/DevNullLogger.java b/driver/src/main/java/org/neo4j/driver/internal/logging/DevNullLogger.java index 3561b900e7..f7e02496a4 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/logging/DevNullLogger.java +++ b/driver/src/main/java/org/neo4j/driver/internal/logging/DevNullLogger.java @@ -53,6 +53,11 @@ public void debug( String message, Object... params ) { } + @Override + public void debug( String message, Throwable throwable ) + { + } + @Override public void trace( String message, Object... params ) { diff --git a/driver/src/main/java/org/neo4j/driver/internal/logging/JULogger.java b/driver/src/main/java/org/neo4j/driver/internal/logging/JULogger.java index ef84d4bb8e..502664c066 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/logging/JULogger.java +++ b/driver/src/main/java/org/neo4j/driver/internal/logging/JULogger.java @@ -63,16 +63,25 @@ public void warn( String message, Throwable cause ) @Override public void debug( String format, Object... params ) { - if( debugEnabled ) + if ( debugEnabled ) { delegate.log( Level.FINE, String.format( format, params ) ); } } + @Override + public void debug( String message, Throwable throwable ) + { + if ( debugEnabled ) + { + delegate.log( Level.FINE, message, throwable ); + } + } + @Override public void trace( String format, Object... params ) { - if( traceEnabled ) + if ( traceEnabled ) { delegate.log( Level.FINEST, String.format( format, params ) ); } diff --git a/driver/src/main/java/org/neo4j/driver/internal/logging/ReformattedLogger.java b/driver/src/main/java/org/neo4j/driver/internal/logging/ReformattedLogger.java index dd61d19a86..b0d9a503e6 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/logging/ReformattedLogger.java +++ b/driver/src/main/java/org/neo4j/driver/internal/logging/ReformattedLogger.java @@ -64,6 +64,15 @@ public void debug( String message, Object... params ) } } + @Override + public void debug( String message, Throwable throwable ) + { + if ( isDebugEnabled() ) + { + delegate.debug( reformat( message ), throwable ); + } + } + @Override public void trace( String message, Object... params ) { diff --git a/driver/src/main/java/org/neo4j/driver/internal/logging/Slf4jLogger.java b/driver/src/main/java/org/neo4j/driver/internal/logging/Slf4jLogger.java index bbe29a338a..1b109dbc13 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/logging/Slf4jLogger.java +++ b/driver/src/main/java/org/neo4j/driver/internal/logging/Slf4jLogger.java @@ -76,6 +76,15 @@ public void debug( String message, Object... params ) } } + @Override + public void debug( String message, Throwable throwable ) + { + if ( isDebugEnabled() ) + { + delegate.debug( message, throwable ); + } + } + @Override public void trace( String message, Object... params ) { diff --git a/driver/src/test/java/org/neo4j/driver/integration/LoggingIT.java b/driver/src/test/java/org/neo4j/driver/integration/LoggingIT.java index 40ebdd9c86..e8ae544e00 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/LoggingIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/LoggingIT.java @@ -68,7 +68,7 @@ void logShouldRecordDebugAndTraceInfo() } // Then - verify( logger, atLeastOnce() ).debug( anyString(), any() ); + verify( logger, atLeastOnce() ).debug( anyString(), any( Object[].class ) ); verify( logger, atLeastOnce() ).trace( anyString(), any() ); } } diff --git a/driver/src/test/java/org/neo4j/driver/internal/DirectDriverBoltKitIT.java b/driver/src/test/java/org/neo4j/driver/internal/DirectDriverBoltKitIT.java index dae0d3de63..a96befe61c 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/DirectDriverBoltKitIT.java +++ b/driver/src/test/java/org/neo4j/driver/internal/DirectDriverBoltKitIT.java @@ -78,7 +78,6 @@ import static org.neo4j.driver.internal.logging.DevNullLogging.DEV_NULL_LOGGING; import static org.neo4j.driver.util.StubServer.INSECURE_CONFIG; import static org.neo4j.driver.util.StubServer.insecureBuilder; -import static org.neo4j.driver.util.StubServer.start; import static org.neo4j.driver.util.TestUtil.asOrderedSet; import static org.neo4j.driver.util.TestUtil.await; @@ -181,7 +180,7 @@ void shouldLogConnectionIdInDebugMode() throws Exception assertEquals( asList( "Foo", "Bar" ), names ); ArgumentCaptor messageCaptor = ArgumentCaptor.forClass( String.class ); - verify( logger, atLeastOnce() ).debug( messageCaptor.capture(), any() ); + verify( logger, atLeastOnce() ).debug( messageCaptor.capture(), any( Object[].class ) ); Optional logMessageWithConnectionId = messageCaptor.getAllValues() .stream() diff --git a/driver/src/test/java/org/neo4j/driver/internal/logging/PrefixedLoggerTest.java b/driver/src/test/java/org/neo4j/driver/internal/logging/PrefixedLoggerTest.java index 630f1bc15c..b6d31d540f 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/logging/PrefixedLoggerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/logging/PrefixedLoggerTest.java @@ -80,7 +80,18 @@ void shouldNotDelegateDebugLogWhenDebugDisabled() PrefixedLogger logger = new PrefixedLogger( delegate ); logger.debug( MESSAGE ); - verify( delegate, never() ).debug( anyString(), any() ); + verify( delegate, never() ).debug( anyString(), any( Object[].class ) ); + } + + @Test + void shouldNotDelegateDebugLogWithThrowableWhenDebugDisabled() + { + Logger delegate = newLoggerMock(); + + PrefixedLogger logger = new PrefixedLogger( delegate ); + logger.debug( MESSAGE, mock( Throwable.class ) ); + + verify( delegate, never() ).debug( anyString(), any( Throwable.class ) ); } @Test