Skip to content

Commit 0631864

Browse files
committed
factor out debug log methods into a class
1 parent fcb7f1d commit 0631864

File tree

4 files changed

+69
-57
lines changed

4 files changed

+69
-57
lines changed

disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporter/FromDiskExporterImpl.java

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,24 @@
88
import io.opentelemetry.contrib.disk.buffering.internal.serialization.deserializers.SignalDeserializer;
99
import io.opentelemetry.contrib.disk.buffering.internal.storage.Storage;
1010
import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.ReadableResult;
11+
import io.opentelemetry.contrib.disk.buffering.internal.utils.DebugLogger;
1112
import io.opentelemetry.sdk.common.CompletableResultCode;
1213
import java.io.IOException;
1314
import java.util.Collection;
1415
import java.util.List;
1516
import java.util.concurrent.TimeUnit;
1617
import java.util.function.Function;
17-
import java.util.logging.Level;
1818
import java.util.logging.Logger;
1919

2020
/**
2121
* Signal-type generic class that can read telemetry previously buffered on disk and send it to
2222
* another delegated exporter.
2323
*/
2424
public final class FromDiskExporterImpl<EXPORT_DATA> implements FromDiskExporter {
25-
private static final Logger logger = Logger.getLogger(FromDiskExporterImpl.class.getName());
25+
private final DebugLogger logger;
2626
private final Storage storage;
2727
private final SignalDeserializer<EXPORT_DATA> deserializer;
2828
private final Function<Collection<EXPORT_DATA>, CompletableResultCode> exportFunction;
29-
private final boolean debugEnabled;
3029

3130
FromDiskExporterImpl(
3231
SignalDeserializer<EXPORT_DATA> deserializer,
@@ -36,7 +35,8 @@ public final class FromDiskExporterImpl<EXPORT_DATA> implements FromDiskExporter
3635
this.deserializer = deserializer;
3736
this.exportFunction = exportFunction;
3837
this.storage = storage;
39-
this.debugEnabled = debugEnabled;
38+
this.logger =
39+
DebugLogger.wrap(Logger.getLogger(FromDiskExporterImpl.class.getName()), debugEnabled);
4040
}
4141

4242
public static <T> FromDiskExporterBuilder<T> builder() {
@@ -54,30 +54,25 @@ public static <T> FromDiskExporterBuilder<T> builder() {
5454
*/
5555
@Override
5656
public boolean exportStoredBatch(long timeout, TimeUnit unit) throws IOException {
57-
log("Attempting to export " + deserializer.signalType() + " batch from disk.");
57+
logger.log("Attempting to export " + deserializer.signalType() + " batch from disk.");
5858
ReadableResult result =
5959
storage.readAndProcess(
6060
bytes -> {
61-
log(
61+
logger.log(
6262
"Read "
6363
+ bytes.length
6464
+ " "
6565
+ deserializer.signalType()
6666
+ " bytes from storage.");
6767
List<EXPORT_DATA> telemetry = deserializer.deserialize(bytes);
68-
log("Now exporting batch of " + telemetry.size() + " " + deserializer.signalType());
68+
logger.log(
69+
"Now exporting batch of " + telemetry.size() + " " + deserializer.signalType());
6970
CompletableResultCode join = exportFunction.apply(telemetry).join(timeout, unit);
7071
return join.isSuccess();
7172
});
7273
return result == ReadableResult.SUCCEEDED;
7374
}
7475

75-
private void log(String msg) {
76-
if (debugEnabled) {
77-
logger.log(Level.INFO, msg);
78-
}
79-
}
80-
8176
@Override
8277
public void shutdown() throws IOException {
8378
storage.close();

disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporter/ToDiskExporter.java

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer;
99
import io.opentelemetry.contrib.disk.buffering.internal.storage.Storage;
10+
import io.opentelemetry.contrib.disk.buffering.internal.utils.DebugLogger;
1011
import io.opentelemetry.sdk.common.CompletableResultCode;
1112
import java.io.IOException;
1213
import java.util.Collection;
@@ -16,11 +17,10 @@
1617

1718
public class ToDiskExporter<EXPORT_DATA> {
1819

19-
private static final Logger logger = Logger.getLogger(ToDiskExporter.class.getName());
20+
private final DebugLogger logger;
2021
private final Storage storage;
2122
private final SignalSerializer<EXPORT_DATA> serializer;
2223
private final Function<Collection<EXPORT_DATA>, CompletableResultCode> exportFunction;
23-
private final boolean debugEnabled;
2424

2525
ToDiskExporter(
2626
SignalSerializer<EXPORT_DATA> serializer,
@@ -30,42 +30,30 @@ public class ToDiskExporter<EXPORT_DATA> {
3030
this.serializer = serializer;
3131
this.exportFunction = exportFunction;
3232
this.storage = storage;
33-
this.debugEnabled = debugEnabled;
33+
this.logger = DebugLogger.wrap(Logger.getLogger(ToDiskExporter.class.getName()), debugEnabled);
3434
}
3535

3636
public static <T> ToDiskExporterBuilder<T> builder() {
3737
return new ToDiskExporterBuilder<>();
3838
}
3939

4040
public CompletableResultCode export(Collection<EXPORT_DATA> data) {
41-
log("Intercepting exporter batch.", Level.FINER);
41+
logger.log("Intercepting exporter batch.", Level.FINER);
4242
try {
4343
if (storage.write(serializer.serialize(data))) {
4444
return CompletableResultCode.ofSuccess();
4545
}
46-
log("Could not store batch in disk. Exporting it right away.");
46+
logger.log("Could not store batch in disk. Exporting it right away.");
4747
return exportFunction.apply(data);
4848
} catch (IOException e) {
49-
if (debugEnabled) {
50-
logger.log(
51-
Level.WARNING,
52-
"An unexpected error happened while attempting to write the data in disk. Exporting it right away.",
53-
e);
54-
}
49+
logger.log(
50+
"An unexpected error happened while attempting to write the data in disk. Exporting it right away.",
51+
Level.WARNING,
52+
e);
5553
return exportFunction.apply(data);
5654
}
5755
}
5856

59-
private void log(String msg) {
60-
log(msg, Level.INFO);
61-
}
62-
63-
private void log(String msg, Level level) {
64-
if (debugEnabled) {
65-
logger.log(level, msg);
66-
}
67-
}
68-
6957
public void shutdown() throws IOException {
7058
storage.close();
7159
}

disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,27 @@
1212
import io.opentelemetry.contrib.disk.buffering.internal.storage.files.WritableFile;
1313
import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.ReadableResult;
1414
import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.WritableResult;
15+
import io.opentelemetry.contrib.disk.buffering.internal.utils.DebugLogger;
1516
import java.io.Closeable;
1617
import java.io.IOException;
1718
import java.util.concurrent.atomic.AtomicBoolean;
1819
import java.util.function.Function;
19-
import java.util.logging.Level;
2020
import java.util.logging.Logger;
2121
import javax.annotation.Nullable;
2222

2323
public final class Storage implements Closeable {
2424
private static final int MAX_ATTEMPTS = 3;
25-
private static final Logger logger = Logger.getLogger(FromDiskExporterImpl.class.getName());
25+
private final DebugLogger logger;
2626

2727
private final FolderManager folderManager;
28-
private final boolean debugEnabled;
2928
private final AtomicBoolean isClosed = new AtomicBoolean(false);
3029
@Nullable private WritableFile writableFile;
3130
@Nullable private ReadableFile readableFile;
3231

3332
public Storage(FolderManager folderManager, boolean debugEnabled) {
3433
this.folderManager = folderManager;
35-
this.debugEnabled = debugEnabled;
34+
this.logger =
35+
DebugLogger.wrap(Logger.getLogger(FromDiskExporterImpl.class.getName()), debugEnabled);
3636
}
3737

3838
public static StorageBuilder builder() {
@@ -51,16 +51,16 @@ public boolean write(byte[] item) throws IOException {
5151

5252
private boolean write(byte[] item, int attemptNumber) throws IOException {
5353
if (isClosed.get()) {
54-
log("Refusing to write to storage after being closed.");
54+
logger.log("Refusing to write to storage after being closed.");
5555
return false;
5656
}
5757
if (attemptNumber > MAX_ATTEMPTS) {
58-
log("Max number of attempts to write buffered data exceeded.", WARNING);
58+
logger.log("Max number of attempts to write buffered data exceeded.", WARNING);
5959
return false;
6060
}
6161
if (writableFile == null) {
6262
writableFile = folderManager.createWritableFile();
63-
log("Created new writableFile: " + writableFile);
63+
logger.log("Created new writableFile: " + writableFile);
6464
}
6565
WritableResult result = writableFile.append(item);
6666
if (result != WritableResult.SUCCEEDED) {
@@ -84,22 +84,22 @@ public ReadableResult readAndProcess(Function<byte[], Boolean> processing) throw
8484
private ReadableResult readAndProcess(Function<byte[], Boolean> processing, int attemptNumber)
8585
throws IOException {
8686
if (isClosed.get()) {
87-
log("Refusing to read from storage after being closed.");
87+
logger.log("Refusing to read from storage after being closed.");
8888
return ReadableResult.FAILED;
8989
}
9090
if (attemptNumber > MAX_ATTEMPTS) {
91-
log("Maximum number of attempts to read and process buffered data exceeded.", WARNING);
91+
logger.log("Maximum number of attempts to read and process buffered data exceeded.", WARNING);
9292
return ReadableResult.FAILED;
9393
}
9494
if (readableFile == null) {
95-
log("Obtaining a new readableFile from the folderManager.");
95+
logger.log("Obtaining a new readableFile from the folderManager.");
9696
readableFile = folderManager.getReadableFile();
9797
if (readableFile == null) {
98-
log("Unable to get or create readable file.");
98+
logger.log("Unable to get or create readable file.");
9999
return ReadableResult.FAILED;
100100
}
101101
}
102-
log("Attempting to read data from " + readableFile);
102+
logger.log("Attempting to read data from " + readableFile);
103103
ReadableResult result = readableFile.readAndProcess(processing);
104104
switch (result) {
105105
case SUCCEEDED:
@@ -112,19 +112,9 @@ private ReadableResult readAndProcess(Function<byte[], Boolean> processing, int
112112
}
113113
}
114114

115-
private void log(String msg) {
116-
log(msg, Level.INFO);
117-
}
118-
119-
private void log(String msg, Level level) {
120-
if (debugEnabled) {
121-
logger.log(level, msg);
122-
}
123-
}
124-
125115
@Override
126116
public void close() throws IOException {
127-
log("Closing disk buffering storage.");
117+
logger.log("Closing disk buffering storage.");
128118
if (isClosed.compareAndSet(false, true)) {
129119
if (writableFile != null) {
130120
writableFile.close();
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.contrib.disk.buffering.internal.utils;
7+
8+
import java.util.logging.Level;
9+
import java.util.logging.Logger;
10+
11+
public class DebugLogger {
12+
private final Logger logger;
13+
private final boolean debugEnabled;
14+
15+
private DebugLogger(Logger logger, boolean debugEnabled) {
16+
this.logger = logger;
17+
this.debugEnabled = debugEnabled;
18+
}
19+
20+
public static DebugLogger wrap(Logger logger, boolean debugEnabled) {
21+
return new DebugLogger(logger, debugEnabled);
22+
}
23+
24+
public void log(String msg) {
25+
log(msg, Level.INFO);
26+
}
27+
28+
public void log(String msg, Level level) {
29+
if (debugEnabled) {
30+
logger.log(level, msg);
31+
}
32+
}
33+
34+
public void log(String msg, Level level, Throwable e) {
35+
if (debugEnabled) {
36+
logger.log(level, msg, e);
37+
}
38+
}
39+
}

0 commit comments

Comments
 (0)