From 0a95a0db8a875b32d24ccc0915497a38eb033f36 Mon Sep 17 00:00:00 2001 From: Dmitriy Tverdiakov Date: Tue, 22 Jun 2021 13:47:39 +0100 Subject: [PATCH] Introduce support for logging debug entries with Throwable --- driver/clirr-ignored-differences.xml | 6 ++++++ driver/src/main/java/org/neo4j/driver/Logger.java | 8 ++++++++ .../driver/internal/logging/DevNullLogger.java | 5 +++++ .../org/neo4j/driver/internal/logging/JULogger.java | 13 +++++++++++-- .../driver/internal/logging/ReformattedLogger.java | 9 +++++++++ .../neo4j/driver/internal/logging/Slf4jLogger.java | 9 +++++++++ .../org/neo4j/driver/integration/LoggingIT.java | 2 +- .../driver/internal/DirectDriverBoltKitIT.java | 3 +-- .../driver/internal/logging/PrefixedLoggerTest.java | 2 +- 9 files changed, 51 insertions(+), 6 deletions(-) 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/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..cfbed1846a 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,7 @@ 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