diff --git a/driver/clirr-ignored-differences.xml b/driver/clirr-ignored-differences.xml
index b9b9547a70..3b946f216d 100644
--- a/driver/clirr-ignored-differences.xml
+++ b/driver/clirr-ignored-differences.xml
@@ -1,3 +1,10 @@
-
+
+
+
+ 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 7f7f5236e7..3a490e4b06 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
@@ -177,7 +177,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