Skip to content

Commit deb675d

Browse files
committed
feat(logging): add support for System.Logger and deprecate Logging
BREAKING CHANGE: the default driver logging implementation has been changed from `Logging#none()` to `Logging.systemLogging()`. The logging abstraction has been deprecated in favour of the `System.Logger`. Specifically, this applies to the following:: - `org.neo4j.driver.Logging` - `org.neo4j.driver.Logger` - `org.neo4j.driver.Config.ConfigBuilder#withLogging(Logging)` - `org.neo4j.driver.Config#logging()` Once the logging abstraction is deleted, the driver is expected to use the `System.Logger` only.
1 parent 22b55b0 commit deb675d

File tree

67 files changed

+415
-52
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+415
-52
lines changed

benchkit-backend/src/main/java/neo4j/org/testkit/backend/Config.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.neo4j.driver.AuthTokens;
2323
import org.neo4j.driver.Logging;
2424

25+
@SuppressWarnings("deprecation")
2526
public record Config(int port, URI uri, AuthToken authToken, Logging logging) {
2627
static Config load() {
2728
var env = System.getenv();

benchkit-backend/src/main/java/neo4j/org/testkit/backend/Runner.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
public class Runner {
3434
public static void main(String[] args) throws InterruptedException {
3535
var config = Config.load();
36+
@SuppressWarnings("deprecation")
3637
var driver = GraphDatabase.driver(
3738
config.uri(),
3839
config.authToken(),

benchkit-backend/src/main/java/neo4j/org/testkit/backend/channel/handler/HttpRequestHandler.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,14 @@ public class HttpRequestHandler extends SimpleChannelInboundHandler<FullHttpRequ
4444
private final ObjectMapper objectMapper = new ObjectMapper();
4545
private final WorkloadHandler workloadHandler;
4646
private final ReadyHandler readyHandler;
47+
48+
@SuppressWarnings("deprecation")
4749
private final Logger logger;
4850

49-
public HttpRequestHandler(WorkloadHandler workloadHandler, ReadyHandler readyHandler, Logging logging) {
51+
public HttpRequestHandler(
52+
WorkloadHandler workloadHandler,
53+
ReadyHandler readyHandler,
54+
@SuppressWarnings("deprecation") Logging logging) {
5055
this.workloadHandler = Objects.requireNonNull(workloadHandler);
5156
this.readyHandler = Objects.requireNonNull(readyHandler);
5257
this.logger = logging.getLog(getClass());

benchkit-backend/src/main/java/neo4j/org/testkit/backend/handler/ReadyHandler.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,11 @@
2828

2929
public class ReadyHandler {
3030
private final Driver driver;
31+
32+
@SuppressWarnings("deprecation")
3133
private final Logger logger;
3234

33-
public ReadyHandler(Driver driver, Logging logging) {
35+
public ReadyHandler(Driver driver, @SuppressWarnings("deprecation") Logging logging) {
3436
this.driver = driver;
3537
this.logger = logging.getLog(getClass());
3638
}

benchkit-backend/src/main/java/neo4j/org/testkit/backend/handler/WorkloadHandler.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,11 @@
4545
public class WorkloadHandler {
4646
private final Driver driver;
4747
private final Executor executor;
48+
49+
@SuppressWarnings("deprecation")
4850
private final Logger logger;
4951

50-
public WorkloadHandler(Driver driver, Executor executor, Logging logging) {
52+
public WorkloadHandler(Driver driver, Executor executor, @SuppressWarnings("deprecation") Logging logging) {
5153
this.driver = Objects.requireNonNull(driver);
5254
this.executor = Objects.requireNonNull(executor);
5355
this.logger = logging.getLog(getClass());

driver/clirr-ignored-differences.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -770,4 +770,10 @@
770770
<differenceType>8001</differenceType>
771771
</difference>
772772

773+
<difference>
774+
<className>org/neo4j/driver/Logging</className>
775+
<differenceType>7012</differenceType>
776+
<method>org.neo4j.driver.Logging systemLogging()</method>
777+
</difference>
778+
773779
</differences>

driver/src/main/java/org/neo4j/driver/Config.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package org.neo4j.driver;
1818

1919
import static java.lang.String.format;
20-
import static org.neo4j.driver.internal.logging.DevNullLogging.DEV_NULL_LOGGING;
2120
import static org.neo4j.driver.internal.util.DriverInfoUtil.driverVersion;
2221

2322
import io.netty.channel.EventLoop;
@@ -32,7 +31,6 @@
3231
import java.util.Optional;
3332
import java.util.Set;
3433
import java.util.concurrent.TimeUnit;
35-
import java.util.logging.Level;
3634
import java.util.stream.Collectors;
3735
import org.neo4j.driver.async.AsyncSession;
3836
import org.neo4j.driver.exceptions.UnsupportedFeatureException;
@@ -83,6 +81,7 @@ public final class Config implements Serializable {
8381
/**
8482
* User defined logging
8583
*/
84+
@SuppressWarnings("deprecation")
8685
private final Logging logging;
8786

8887
/**
@@ -187,7 +186,9 @@ private Config(ConfigBuilder builder) {
187186
* Logging provider
188187
*
189188
* @return the Logging provider to use
189+
* @deprecated the logging abstraction has been deprecated in favour of the {@link System.Logger}
190190
*/
191+
@Deprecated
191192
public Logging logging() {
192193
return logging;
193194
}
@@ -408,7 +409,9 @@ public boolean isTelemetryDisabled() {
408409
* Used to build new config instances
409410
*/
410411
public static final class ConfigBuilder {
411-
private Logging logging = DEV_NULL_LOGGING;
412+
@SuppressWarnings("deprecation")
413+
private Logging logging = Logging.systemLogging();
414+
412415
private boolean logLeakedSessions;
413416
private int maxConnectionPoolSize = 100;
414417
private long idleTimeBeforeConnectionTest = -1;
@@ -432,7 +435,7 @@ public static final class ConfigBuilder {
432435
private ConfigBuilder() {}
433436

434437
/**
435-
* Provide a logging implementation for the driver to use. Java logging framework {@link java.util.logging} with {@link Level#INFO} is used by default.
438+
* Provide a logging implementation for the driver to use. {@link Logging#systemLogging()} is used by default.
436439
* Callers are expected to either implement {@link Logging} interface or provide one of the existing implementations available from static factory
437440
* methods in the {@link Logging} interface.
438441
* <p>
@@ -441,7 +444,9 @@ private ConfigBuilder() {}
441444
* @param logging the logging instance to use
442445
* @return this builder
443446
* @see Logging
447+
* @deprecated the logging abstraction has been deprecated in favour of the {@link System.Logger}
444448
*/
449+
@Deprecated
445450
public ConfigBuilder withLogging(Logging logging) {
446451
this.logging = logging;
447452
return this;

driver/src/main/java/org/neo4j/driver/GraphDatabase.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,7 @@ private static Driver driver(
361361
return driverFactory.newInstance(uri, new StaticAuthTokenManager(authToken), clientCertificateManager, config);
362362
}
363363

364+
@SuppressWarnings("deprecation")
364365
private static Driver driver(
365366
URI uri,
366367
AuthTokenManager authTokenManager,

driver/src/main/java/org/neo4j/driver/Logger.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@
2323
* message only if the needed logging level is enabled. Driver expects formatting to be done using {@link String#format(String, Object...)} method.
2424
* Thus, all supplied message templates will contain "%s" as parameter placeholders. This is different from all SLF4J-compatible logging frameworks
2525
* where parameter placeholder is "{}". Implementations of this interface should adapt placeholders from "%s" to "{}", if required.
26+
* @deprecated the logging abstraction has been deprecated in favour of the {@link System.Logger}
2627
*/
28+
@Deprecated
2729
public interface Logger {
2830
/**
2931
* Logs errors from this driver.

driver/src/main/java/org/neo4j/driver/Logging.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.neo4j.driver.internal.logging.ConsoleLogging;
2525
import org.neo4j.driver.internal.logging.JULogging;
2626
import org.neo4j.driver.internal.logging.Slf4jLogging;
27+
import org.neo4j.driver.internal.logging.SystemLogging;
2728

2829
/**
2930
* Accessor for {@link Logger} instances. Configured once for a driver instance using {@link Config.ConfigBuilder#withLogging(Logging)} builder method.
@@ -82,7 +83,9 @@
8283
*
8384
* @see Logger
8485
* @see Config.ConfigBuilder#withLogging(Logging)
86+
* @deprecated the logging abstraction has been deprecated in favour of the {@link System.Logger}
8587
*/
88+
@Deprecated
8689
public interface Logging extends Serializable {
8790
/**
8891
* Obtain a {@link Logger} instance by class, its name will be the fully qualified name of the class.
@@ -103,6 +106,16 @@ default Logger getLog(Class<?> clazz) {
103106
*/
104107
Logger getLog(String name);
105108

109+
/**
110+
* Returns logging implementation that uses {@link System.Logger}.
111+
*
112+
* @return logging implementation
113+
* @since 6.0.0
114+
*/
115+
static Logging systemLogging() {
116+
return SystemLogging.INSTANCE;
117+
}
118+
106119
/**
107120
* Create logging implementation that uses SLF4J.
108121
*

driver/src/main/java/org/neo4j/driver/internal/BoltLogger.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@
2020
import org.neo4j.driver.Logger;
2121

2222
public class BoltLogger implements System.Logger {
23+
@SuppressWarnings("deprecation")
2324
private final Logger logger;
2425

25-
public BoltLogger(Logger logger) {
26+
public BoltLogger(@SuppressWarnings("deprecation") Logger logger) {
2627
this.logger = logger;
2728
}
2829

driver/src/main/java/org/neo4j/driver/internal/BoltLoggingProvider.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@
2020
import org.neo4j.driver.Logging;
2121

2222
public class BoltLoggingProvider implements LoggingProvider {
23+
@SuppressWarnings("deprecation")
2324
private final Logging logging;
2425

25-
public BoltLoggingProvider(Logging logging) {
26+
public BoltLoggingProvider(@SuppressWarnings("deprecation") Logging logging) {
2627
this.logging = logging;
2728
}
2829

driver/src/main/java/org/neo4j/driver/internal/DriverFactory.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ public final Driver newInstance(
8282
return newInstance(uri, authTokenManager, clientCertificateManager, config, null, null, null);
8383
}
8484

85+
@SuppressWarnings("deprecation")
8586
public final Driver newInstance(
8687
URI uri,
8788
AuthTokenManager authTokenManager,
@@ -141,6 +142,7 @@ public final Driver newInstance(
141142
rediscoverySupplier);
142143
}
143144

145+
@SuppressWarnings("deprecation")
144146
protected static MetricsProvider getOrCreateMetricsProvider(Config config, Clock clock) {
145147
var metricsAdapter = config.metricsAdapter();
146148
// This can actually only happen when someone mocks the config
@@ -154,6 +156,7 @@ protected static MetricsProvider getOrCreateMetricsProvider(Config config, Clock
154156
};
155157
}
156158

159+
@SuppressWarnings("deprecation")
157160
private InternalDriver createDriver(
158161
URI uri,
159162
BoltSecurityPlanManager securityPlanManager,
@@ -263,6 +266,7 @@ private DriverBoltConnectionProvider createDriverBoltConnectionProvider(
263266
connectTimeoutMillis);
264267
}
265268

269+
@SuppressWarnings("deprecation")
266270
protected BoltConnectionProvider createBoltConnectionProvider(
267271
URI uri,
268272
Config config,
@@ -397,6 +401,7 @@ protected LocalAddress localAddress() {
397401
* <p>
398402
* <b>This method is protected only for testing</b>
399403
*/
404+
@SuppressWarnings("deprecation")
400405
protected InternalDriver createDriver(
401406
BoltSecurityPlanManager securityPlanManager,
402407
SessionFactory sessionFactory,
@@ -442,7 +447,9 @@ protected SessionFactory createSessionFactory(
442447
* <b>This method is protected only for testing</b>
443448
*/
444449
protected RetryLogic createRetryLogic(
445-
long maxTransactionRetryTime, EventExecutorGroup eventExecutorGroup, Logging logging) {
450+
long maxTransactionRetryTime,
451+
EventExecutorGroup eventExecutorGroup,
452+
@SuppressWarnings("deprecation") Logging logging) {
446453
return new ExponentialBackoffRetryLogic(maxTransactionRetryTime, eventExecutorGroup, createClock(), logging);
447454
}
448455

driver/src/main/java/org/neo4j/driver/internal/InternalDriver.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ public class InternalDriver implements Driver {
6161
BookmarkManagers.defaultManager(BookmarkManagerConfig.builder().build());
6262
private final BoltSecurityPlanManager securityPlanManager;
6363
private final SessionFactory sessionFactory;
64+
65+
@SuppressWarnings("deprecation")
6466
private final Logger log;
6567

6668
private final boolean telemetryDisabled;
@@ -77,7 +79,7 @@ public class InternalDriver implements Driver {
7779
boolean telemetryDisabled,
7880
NotificationConfig notificationConfig,
7981
Supplier<CompletionStage<Void>> shutdownSupplier,
80-
Logging logging) {
82+
@SuppressWarnings("deprecation") Logging logging) {
8183
this.securityPlanManager = securityPlanManager;
8284
this.sessionFactory = sessionFactory;
8385
this.metricsProvider = metricsProvider;

driver/src/main/java/org/neo4j/driver/internal/SessionFactoryImpl.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,16 @@ public class SessionFactoryImpl implements SessionFactory {
4848
private final BoltSecurityPlanManager securityPlanManager;
4949
private final DriverBoltConnectionProvider connectionProvider;
5050
private final RetryLogic retryLogic;
51+
52+
@SuppressWarnings("deprecation")
5153
private final Logging logging;
54+
5255
private final boolean leakedSessionsLoggingEnabled;
5356
private final long defaultFetchSize;
5457
private final AuthTokenManager authTokenManager;
5558
private final HomeDatabaseCache homeDatabaseCache;
5659

60+
@SuppressWarnings("deprecation")
5761
SessionFactoryImpl(
5862
BoltSecurityPlanManager securityPlanManager,
5963
DriverBoltConnectionProvider connectionProvider,
@@ -167,7 +171,7 @@ private NetworkSession createSession(
167171
Set<Bookmark> bookmarks,
168172
long fetchSize,
169173
String impersonatedUser,
170-
Logging logging,
174+
@SuppressWarnings("deprecation") Logging logging,
171175
BookmarkManager bookmarkManager,
172176
NotificationConfig driverNotificationConfig,
173177
NotificationConfig notificationConfig,

driver/src/main/java/org/neo4j/driver/internal/async/LeakLoggingNetworkSession.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public LeakLoggingNetworkSession(
4747
Set<Bookmark> bookmarks,
4848
String impersonatedUser,
4949
long fetchSize,
50-
Logging logging,
50+
@SuppressWarnings("deprecation") Logging logging,
5151
BookmarkManager bookmarkManager,
5252
NotificationConfig driverNotificationConfig,
5353
NotificationConfig notificationConfig,

driver/src/main/java/org/neo4j/driver/internal/async/NetworkSession.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,11 @@ public class NetworkSession {
9494
private final NetworkSessionConnectionContext connectionContext;
9595
private final AccessMode mode;
9696
private final RetryLogic retryLogic;
97+
98+
@SuppressWarnings("deprecation")
9799
private final Logging logging;
100+
101+
@SuppressWarnings("deprecation")
98102
protected final Logger log;
99103

100104
private final long fetchSize;
@@ -122,7 +126,7 @@ public NetworkSession(
122126
Set<Bookmark> bookmarks,
123127
String impersonatedUser,
124128
long fetchSize,
125-
Logging logging,
129+
@SuppressWarnings("deprecation") Logging logging,
126130
BookmarkManager bookmarkManager,
127131
org.neo4j.driver.NotificationConfig driverNotificationConfig,
128132
org.neo4j.driver.NotificationConfig notificationConfig,
@@ -723,7 +727,10 @@ public AuthToken overrideAuthToken() {
723727
public static class RunRxResponseHandler implements DriverResponseHandler {
724728
private static final Lock NOOP_LOCK = new NoopLock();
725729
final CompletableFuture<RxResultCursor> cursorFuture = new CompletableFuture<>();
730+
731+
@SuppressWarnings("deprecation")
726732
private final Logging logging;
733+
727734
private final DriverBoltConnection connection;
728735
private final Query query;
729736
private final Consumer<DatabaseBookmark> bookmarkConsumer;
@@ -734,7 +741,7 @@ public static class RunRxResponseHandler implements DriverResponseHandler {
734741
private int ignoredCount;
735742

736743
public RunRxResponseHandler(
737-
Logging logging,
744+
@SuppressWarnings("deprecation") Logging logging,
738745
DriverBoltConnection connection,
739746
Query query,
740747
Consumer<DatabaseBookmark> bookmarkConsumer,

driver/src/main/java/org/neo4j/driver/internal/async/TerminationAwareBoltConnection.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,17 @@
3131
import org.neo4j.driver.internal.util.Futures;
3232

3333
final class TerminationAwareBoltConnection extends DelegatingBoltConnection {
34+
@SuppressWarnings("deprecation")
3435
private final Logging logging;
36+
37+
@SuppressWarnings("deprecation")
3538
private final Logger log;
39+
3640
private final TerminationAwareStateLockingExecutor executor;
3741
private final Consumer<Throwable> throwableConsumer;
3842

3943
public TerminationAwareBoltConnection(
40-
Logging logging,
44+
@SuppressWarnings("deprecation") Logging logging,
4145
DriverBoltConnection delegate,
4246
TerminationAwareStateLockingExecutor executor,
4347
Consumer<Throwable> throwableConsumer) {

driver/src/main/java/org/neo4j/driver/internal/async/TerminationAwareResponseHandler.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@
2525
import org.neo4j.driver.internal.util.Futures;
2626

2727
final class TerminationAwareResponseHandler extends DelegatingResponseHandler {
28+
@SuppressWarnings("deprecation")
2829
private final Logger log;
30+
2931
private final TerminationAwareStateLockingExecutor executor;
3032
private final Consumer<Throwable> throwableConsumer;
3133

3234
TerminationAwareResponseHandler(
33-
Logging logging,
35+
@SuppressWarnings("deprecation") Logging logging,
3436
DriverResponseHandler delegate,
3537
TerminationAwareStateLockingExecutor executor,
3638
Consumer<Throwable> throwableConsumer) {

0 commit comments

Comments
 (0)