Skip to content

Commit a1e957c

Browse files
committed
#44 - Migrate to use System.Logger rather than SLF4J-API (better support for jlink / module-path)
1 parent 761da88 commit a1e957c

File tree

5 files changed

+32
-34
lines changed

5 files changed

+32
-34
lines changed

client/pom.xml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,6 @@
1818

1919
<dependencies>
2020

21-
<dependency>
22-
<groupId>org.slf4j</groupId>
23-
<artifactId>slf4j-api</artifactId>
24-
<version>1.7.36</version>
25-
</dependency>
26-
2721
<dependency>
2822
<groupId>com.fasterxml.jackson.core</groupId>
2923
<artifactId>jackson-databind</artifactId>
@@ -40,6 +34,13 @@
4034

4135
<!-- test dependencies -->
4236

37+
<dependency>
38+
<groupId>io.avaje</groupId>
39+
<artifactId>avaje-slf4j-jpl</artifactId>
40+
<version>1.0</version>
41+
<scope>test</scope>
42+
</dependency>
43+
4344
<dependency>
4445
<groupId>io.avaje</groupId>
4546
<artifactId>junit</artifactId>

client/src/main/java/io/avaje/http/client/DHttpApi.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
package io.avaje.http.client;
22

3-
import org.slf4j.Logger;
4-
import org.slf4j.LoggerFactory;
5-
63
import java.util.HashMap;
74
import java.util.Map;
85
import java.util.ServiceLoader;
96

7+
import static java.lang.System.Logger.Level.*;
8+
109
/**
1110
* Service loads the HttpApiProvider for HttpApi.
1211
*/
1312
final class DHttpApi {
1413

15-
private static final Logger log = LoggerFactory.getLogger(DHttpApi.class);
14+
private static final System.Logger log = System.getLogger("io.avaje.http.client");
1615

1716
private static final DHttpApi INSTANCE = new DHttpApi();
1817

@@ -27,7 +26,7 @@ void init() {
2726
for (HttpApiProvider apiProvider : ServiceLoader.load(HttpApiProvider.class)) {
2827
addProvider(apiProvider);
2928
}
30-
log.debug("providers for {}", providerMap.keySet());
29+
log.log(DEBUG, "providers for %s", providerMap.keySet());
3130
}
3231

3332
void addProvider(HttpApiProvider apiProvider) {

client/src/main/java/io/avaje/http/client/RequestLogger.java

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package io.avaje.http.client;
22

3-
import org.slf4j.Logger;
4-
import org.slf4j.LoggerFactory;
5-
3+
import java.lang.System.Logger.Level;
64
import java.net.http.HttpHeaders;
75
import java.net.http.HttpRequest;
86
import java.net.http.HttpResponse;
@@ -11,23 +9,24 @@
119
import java.util.Set;
1210

1311
/**
14-
* Logs request and response details for debug logging purposes.
12+
* Logs request and response details for debug logging purposes using <code>System.Logger</code>.
13+
* <p>
14+
* This implementation logs the request and response with the same single logging entry
15+
* rather than separate logging of the request and response.
1516
* <p>
16-
* This implementation logs the request and response with the same
17-
* single logging entry rather than separate logging of the request
18-
* and response.
17+
* With logging level set to {@code DEBUG} for {@code io.avaje.http.client.RequestLogger} the
18+
* request and response are logged as a summary with response status and time.
1919
* <p>
20-
* With logging level set to {@code DEBUG} for
21-
* {@code io.avaje.http.client.RequestLogger} the request and response
22-
* are logged as a summary with response status and time.
20+
* Set the logging level to {@code TRACE} to include the request and response headers and body
21+
* payloads with truncation for large bodies.
2322
* <p>
24-
* Set the logging level to {@code TRACE} to include the request
25-
* and response headers and body payloads with truncation for large
26-
* bodies.
23+
* Using System.Logger, messages by default go to JUL (Java Util Logging) unless a provider
24+
* is registered. We can use <em>io.avaje:avaje-slf4j-jpl</em> to have System.Logger
25+
* messages go to <em>slf4j-api</em>.
2726
*/
2827
public class RequestLogger implements RequestListener {
2928

30-
private static final Logger log = LoggerFactory.getLogger(RequestLogger.class);
29+
private static final System.Logger log = System.getLogger("io.avaje.http.client.RequestLogger");
3130

3231
private final String delimiter;
3332

@@ -47,7 +46,7 @@ public RequestLogger(String delimiter) {
4746

4847
@Override
4948
public void response(Event event) {
50-
if (log.isDebugEnabled()) {
49+
if (log.isLoggable(Level.DEBUG)) {
5150
final HttpResponse<?> response = event.response();
5251
final HttpRequest request = response.request();
5352
long micros = event.responseTimeMicros();
@@ -58,13 +57,13 @@ public void response(Event event) {
5857
.append(" uri:").append(event.uri())
5958
.append(" timeMicros:").append(micros);
6059

61-
if (log.isTraceEnabled()) {
60+
if (log.isLoggable(Level.TRACE)) {
6261
headers(sb, "req-head: ", request.headers());
6362
body(sb, "req-body: ", event.requestBody());
6463
headers(sb, "res-head: ", response.headers());
6564
body(sb, "res-body: ", event.responseBody());
6665
}
67-
log.debug(sb.toString());
66+
log.log(Level.DEBUG, sb.toString());
6867
}
6968
}
7069

client/src/main/java/io/avaje/http/client/SimpleRetryHandler.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package io.avaje.http.client;
22

3-
import org.slf4j.Logger;
4-
import org.slf4j.LoggerFactory;
5-
3+
import java.lang.System.Logger.Level;
64
import java.net.http.HttpResponse;
75
import java.util.Random;
86

@@ -11,7 +9,7 @@
119
*/
1210
public class SimpleRetryHandler implements RetryHandler {
1311

14-
private static final Logger log = LoggerFactory.getLogger(SimpleRetryHandler.class);
12+
private static final System.Logger log = System.getLogger("io.avaje.http.client");
1513

1614
private final int maxRetries;
1715
private final long backoffMillis;
@@ -47,7 +45,9 @@ public boolean isRetry(int retryCount, HttpResponse<?> response) {
4745
if (response.statusCode() < 500 || retryCount >= maxRetries) {
4846
return false;
4947
}
50-
log.debug("retry count:{} status:{} uri:{}", retryCount, response.statusCode(), response.uri());
48+
if (log.isLoggable(Level.DEBUG)) {
49+
log.log(Level.DEBUG, "retry count:%s status:%s uri:%s", retryCount, response.statusCode(), response.uri());
50+
}
5151
try {
5252
int gitter = gitterMillis < 1 ? 0 : random.nextInt(gitterMillis);
5353
Thread.sleep(backoffMillis + gitter);

client/src/main/java/module-info.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
uses io.avaje.http.client.HttpApiProvider;
44

55
requires transitive java.net.http;
6-
requires transitive org.slf4j;
76
requires static com.fasterxml.jackson.databind;
87
requires static com.fasterxml.jackson.annotation;
98
requires static com.fasterxml.jackson.core;

0 commit comments

Comments
 (0)