This is an automated email from the ASF dual-hosted git repository.
lhotari pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
The following commit(s) were added to refs/heads/master by this push:
new db5cd4e2a2 BP-69: Remove bookkeeper-slogger module (#4764)
db5cd4e2a2 is described below
commit db5cd4e2a2323e5ec13c7d9753198e44bbbcc4b7
Author: Matteo Merli <[email protected]>
AuthorDate: Tue May 5 00:53:40 2026 -0700
BP-69: Remove bookkeeper-slogger module (#4764)
Convert the remaining bookkeeper-slogger callsites in bookkeeper-server
to the slog library and remove the bookkeeper-slogger module entirely.
Conversion mapping:
- new Slf4jSlogger(Foo.class) → Logger.get(Foo.class)
- slog.kv("k", v).info(Events.X) → log.info().attr("k",
v).log(Events.X.toString())
- slog.kv(...).warn/error(Events.X, t) →
log.warn/error().exception(t).attr(...).log(Events.X.toString())
- slogParent.kv("dir", d).ctx(Foo.class) →
Logger.get(Foo.class).with().ctx(parent).attr("dir", d).build()
- Slogger.NULL / Slogger.CONSOLE in tests → Logger.get(TestClass.class)
Files converted:
- 5 main: DirectEntryLogger, DirectWriter, DirectCompactionEntryLog,
EntryLogIdsImpl, DbLedgerStorage
- 9 tests: GarbageCollectorThreadTest, EntryLogTestUtils, TestMetadata,
TestTransactionalEntryLogCompactor, TestDirectWriter,
TestDirectEntryLogger, TestDirectReader, TestDirectEntryLoggerCompat,
TestEntryLogIds
Module removal:
- Removed bookkeeper-slogger/ directory tree (api + slf4j + tests).
- Dropped <module>bookkeeper-slogger</module> from root pom.xml.
- Dropped bookkeeper-slogger-api / bookkeeper-slogger-slf4j deps from
bookkeeper-server/pom.xml.
Verified: mvn -pl bookkeeper-server compile checkstyle:check passes;
all 64 tests under Test*EntryLog* / Test*Direct* /
GarbageCollectorThreadTest
/ TestMetadata pass.
---
bookkeeper-server/pom.xml | 10 -
.../DirectCompactionEntryLog.java | 64 ++---
.../directentrylogger/DirectEntryLogger.java | 66 ++---
.../storage/directentrylogger/DirectWriter.java | 19 +-
.../storage/directentrylogger/EntryLogIdsImpl.java | 18 +-
.../bookie/storage/directentrylogger/Events.java | 145 -----------
.../bookie/storage/ldb/DbLedgerStorage.java | 8 +-
.../bookie/GarbageCollectorThreadTest.java | 17 +-
.../bookie/storage/EntryLogTestUtils.java | 8 +-
.../directentrylogger/TestDirectEntryLogger.java | 26 +-
.../TestDirectEntryLoggerCompat.java | 24 +-
.../directentrylogger/TestDirectReader.java | 14 +-
.../directentrylogger/TestDirectWriter.java | 28 +--
.../storage/directentrylogger/TestEntryLogIds.java | 32 +--
.../storage/directentrylogger/TestMetadata.java | 4 +-
.../TestTransactionalEntryLogCompactor.java | 8 +-
bookkeeper-slogger/api/pom.xml | 27 --
.../apache/bookkeeper/slogger/AbstractSlogger.java | 275 ---------------------
.../apache/bookkeeper/slogger/ConsoleSlogger.java | 129 ----------
.../org/apache/bookkeeper/slogger/NullSlogger.java | 63 -----
.../org/apache/bookkeeper/slogger/Sloggable.java | 27 --
.../bookkeeper/slogger/SloggableAccumulator.java | 27 --
.../org/apache/bookkeeper/slogger/Slogger.java | 47 ----
.../apache/bookkeeper/slogger/package-info.java | 23 --
.../apache/bookkeeper/slogger/ConcurrencyTest.java | 77 ------
.../bookkeeper/slogger/ConsoleSloggerTest.java | 39 ---
.../org/apache/bookkeeper/slogger/MockSlogger.java | 87 -------
.../org/apache/bookkeeper/slogger/SloggerTest.java | 163 ------------
bookkeeper-slogger/pom.xml | 49 ----
bookkeeper-slogger/slf4j/pom.xml | 34 ---
.../bookkeeper/slogger/slf4j/Slf4jSlogger.java | 106 --------
.../bookkeeper/slogger/slf4j/package-info.java | 23 --
.../apache/bookkeeper/slogger/slf4j/Slf4jTest.java | 37 ---
pom.xml | 1 -
34 files changed, 176 insertions(+), 1549 deletions(-)
diff --git a/bookkeeper-server/pom.xml b/bookkeeper-server/pom.xml
index da482b9c5a..3fd415c4bc 100644
--- a/bookkeeper-server/pom.xml
+++ b/bookkeeper-server/pom.xml
@@ -40,16 +40,6 @@
<artifactId>bookkeeper-proto</artifactId>
<version>${project.parent.version}</version>
</dependency>
- <dependency>
- <groupId>org.apache.bookkeeper</groupId>
- <artifactId>bookkeeper-slogger-slf4j</artifactId>
- <version>${project.parent.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.bookkeeper</groupId>
- <artifactId>bookkeeper-slogger-api</artifactId>
- <version>${project.parent.version}</version>
- </dependency>
<dependency>
<groupId>org.apache.bookkeeper</groupId>
<artifactId>bookkeeper-tools-framework</artifactId>
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectCompactionEntryLog.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectCompactionEntryLog.java
index 58ac98fec5..5e122ae009 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectCompactionEntryLog.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectCompactionEntryLog.java
@@ -24,6 +24,7 @@ import static
org.apache.bookkeeper.bookie.TransactionalEntryLogCompactor.COMPAC
import static
org.apache.bookkeeper.bookie.TransactionalEntryLogCompactor.COMPACTING_SUFFIX;
import static org.apache.bookkeeper.common.util.ExceptionMessageHelper.exMsg;
+import io.github.merlimat.slog.Logger;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;
import java.io.File;
@@ -34,7 +35,6 @@ import org.apache.bookkeeper.bookie.EntryLogMetadata;
import org.apache.bookkeeper.bookie.storage.CompactionEntryLog;
import org.apache.bookkeeper.bookie.storage.EntryLogScanner;
import org.apache.bookkeeper.common.util.nativeio.NativeIO;
-import org.apache.bookkeeper.slogger.Slogger;
import org.apache.bookkeeper.stats.OpStatsLogger;
/**
@@ -43,7 +43,7 @@ import org.apache.bookkeeper.stats.OpStatsLogger;
public abstract class DirectCompactionEntryLog implements CompactionEntryLog {
protected final int srcLogId;
protected final int dstLogId;
- protected final Slogger slog;
+ protected final Logger log;
protected final File compactingFile;
protected final File compactedFile;
@@ -57,10 +57,10 @@ public abstract class DirectCompactionEntryLog implements
CompactionEntryLog {
BufferPool writeBuffers,
NativeIO nativeIO,
ByteBufAllocator allocator,
- Slogger slog) throws IOException {
+ Logger log) throws IOException {
return new WritingDirectCompactionEntryLog(
srcLogId, dstLogId, ledgerDir, maxFileSize,
- writeExecutor, writeBuffers, nativeIO, allocator, slog);
+ writeExecutor, writeBuffers, nativeIO, allocator, log);
}
static CompactionEntryLog recoverLog(int srcLogId,
@@ -71,15 +71,15 @@ public abstract class DirectCompactionEntryLog implements
CompactionEntryLog {
NativeIO nativeIO,
ByteBufAllocator allocator,
OpStatsLogger readBlockStats,
- Slogger slog) {
+ Logger log) {
return new RecoveredDirectCompactionEntryLog(srcLogId, dstLogId,
ledgerDir, readBufferSize,
- maxSaneEntrySize,
nativeIO, allocator, readBlockStats, slog);
+ maxSaneEntrySize,
nativeIO, allocator, readBlockStats, log);
}
private DirectCompactionEntryLog(int srcLogId,
int dstLogId,
File ledgerDir,
- Slogger slog) {
+ Logger log) {
compactingFile = compactingFile(ledgerDir, dstLogId);
compactedFile = compactedFile(ledgerDir, dstLogId, srcLogId);
completeFile = DirectEntryLogger.logFile(ledgerDir, dstLogId);
@@ -87,7 +87,11 @@ public abstract class DirectCompactionEntryLog implements
CompactionEntryLog {
this.srcLogId = srcLogId;
this.dstLogId = dstLogId;
- this.slog = slog.kv("dstLogId", dstLogId).kv("srcLogId",
srcLogId).ctx(DirectCompactionEntryLog.class);
+ this.log = Logger.get(DirectCompactionEntryLog.class).with()
+ .ctx(log)
+ .attr("dstLogId", dstLogId)
+ .attr("srcLogId", srcLogId)
+ .build();
}
@Override
@@ -95,13 +99,15 @@ public abstract class DirectCompactionEntryLog implements
CompactionEntryLog {
try {
Files.deleteIfExists(compactingFile.toPath());
} catch (IOException ioe) {
- slog.kv("compactingFile",
compactingFile).warn(Events.COMPACTION_ABORT_EXCEPTION, ioe);
+ log.warn().exception(ioe).attr("compactingFile", compactingFile)
+ .log("Compaction aborted");
}
try {
Files.deleteIfExists(compactedFile.toPath());
} catch (IOException ioe) {
- slog.kv("compactedFile",
compactedFile).warn(Events.COMPACTION_ABORT_EXCEPTION, ioe);
+ log.warn().exception(ioe).attr("compactedFile", compactedFile)
+ .log("Compaction aborted");
}
}
@@ -109,8 +115,8 @@ public abstract class DirectCompactionEntryLog implements
CompactionEntryLog {
@Override
public void makeAvailable() throws IOException {
idempotentLink(compactedFile, completeFile);
- slog.kv("compactedFile", compactedFile).kv("completeFile",
completeFile)
- .info(Events.COMPACTION_MAKE_AVAILABLE);
+ log.info().attr("compactedFile", compactedFile).attr("completeFile",
completeFile)
+ .log("Making compacted log available");
}
private static void idempotentLink(File src, File dst) throws IOException {
@@ -132,15 +138,17 @@ public abstract class DirectCompactionEntryLog implements
CompactionEntryLog {
try {
Files.deleteIfExists(compactingFile.toPath());
} catch (IOException ioe) {
- slog.kv("compactingFile",
compactingFile).warn(Events.COMPACTION_DELETE_FAILURE, ioe);
+ log.warn().exception(ioe).attr("compactingFile", compactingFile)
+ .log("Failed to delete compaction artifact");
}
try {
Files.deleteIfExists(compactedFile.toPath());
} catch (IOException ioe) {
- slog.kv("compactedFile",
compactedFile).warn(Events.COMPACTION_DELETE_FAILURE, ioe);
+ log.warn().exception(ioe).attr("compactedFile", compactedFile)
+ .log("Failed to delete compaction artifact");
}
- slog.info(Events.COMPACTION_COMPLETE);
+ log.info("Compaction complete");
}
@Override
@@ -168,15 +176,15 @@ public abstract class DirectCompactionEntryLog implements
CompactionEntryLog {
NativeIO nativeIO,
ByteBufAllocator allocator,
OpStatsLogger readBlockStats,
- Slogger slog) {
- super(srcLogId, dstLogId, ledgerDir, slog);
+ Logger log) {
+ super(srcLogId, dstLogId, ledgerDir, log);
this.allocator = allocator;
this.nativeIO = nativeIO;
this.readBufferSize = readBufferSize;
this.maxSaneEntrySize = maxSaneEntrySize;
this.readBlockStats = readBlockStats;
- this.slog.info(Events.COMPACTION_LOG_RECOVERED);
+ this.log.info("Recovered partially-flushed compaction log");
}
private IllegalStateException illegalOpException() {
@@ -223,16 +231,16 @@ public abstract class DirectCompactionEntryLog implements
CompactionEntryLog {
BufferPool writeBuffers,
NativeIO nativeIO,
ByteBufAllocator allocator,
- Slogger slog) throws IOException {
- super(srcLogId, dstLogId, ledgerDir, slog);
+ Logger log) throws IOException {
+ super(srcLogId, dstLogId, ledgerDir, log);
this.writer = new WriterWithMetadata(
new DirectWriter(dstLogId, compactingFile.toString(),
maxFileSize,
- writeExecutor, writeBuffers, nativeIO,
slog),
+ writeExecutor, writeBuffers, nativeIO,
log),
new EntryLogMetadata(dstLogId),
allocator);
- this.slog.info(Events.COMPACTION_LOG_CREATED);
+ this.log.info("Created compaction log");
}
@Override
@@ -251,13 +259,13 @@ public abstract class DirectCompactionEntryLog implements
CompactionEntryLog {
idempotentLink(compactingFile, compactedFile);
if (!compactingFile.delete()) {
- slog.kv("compactingFile", compactingFile)
- .kv("compactedFile", compactedFile)
- .info(Events.COMPACTION_DELETE_FAILURE);
+ log.info().attr("compactingFile", compactingFile)
+ .attr("compactedFile", compactedFile)
+ .log("Failed to delete compaction artifact");
} else {
- slog.kv("compactingFile", compactingFile)
- .kv("compactedFile", compactedFile)
- .info(Events.COMPACTION_MARK_COMPACTED);
+ log.info().attr("compactingFile", compactingFile)
+ .attr("compactedFile", compactedFile)
+ .log("Marked compaction log as compacted");
}
}
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectEntryLogger.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectEntryLogger.java
index 035981514e..3ba8f541d4 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectEntryLogger.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectEntryLogger.java
@@ -28,6 +28,7 @@ import com.google.common.annotations.VisibleForTesting;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.RemovalListener;
+import io.github.merlimat.slog.Logger;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;
import io.netty.util.ReferenceCountUtil;
@@ -56,7 +57,6 @@ import org.apache.bookkeeper.bookie.storage.EntryLogIds;
import org.apache.bookkeeper.bookie.storage.EntryLogScanner;
import org.apache.bookkeeper.bookie.storage.EntryLogger;
import org.apache.bookkeeper.common.util.nativeio.NativeIO;
-import org.apache.bookkeeper.slogger.Slogger;
import org.apache.bookkeeper.stats.StatsLogger;
import org.apache.bookkeeper.util.LedgerDirUtil;
@@ -64,7 +64,7 @@ import org.apache.bookkeeper.util.LedgerDirUtil;
* DirectEntryLogger.
*/
public class DirectEntryLogger implements EntryLogger {
- private final Slogger slog;
+ private final Logger log;
private final File ledgerDir;
private final EntryLogIds ids;
private final ExecutorService writeExecutor;
@@ -99,7 +99,7 @@ public class DirectEntryLogger implements EntryLogger {
int readBufferSize,
int numReadThreads,
int maxFdCacheTimeSeconds,
- Slogger slogParent,
+ Logger logParent,
StatsLogger stats) throws IOException {
this.ledgerDir = ledgerDir;
this.flushExecutor = flushExecutor;
@@ -112,7 +112,10 @@ public class DirectEntryLogger implements EntryLogger {
this.maxSaneEntrySize = maxSaneEntrySize;
this.readBufferSize = Buffer.nextAlignment(readBufferSize);
this.ids = ids;
- this.slog = slogParent.kv("directory",
ledgerDir).ctx(DirectEntryLogger.class);
+ this.log = Logger.get(DirectEntryLogger.class).with()
+ .ctx(logParent)
+ .attr("directory", ledgerDir)
+ .build();
this.stats = new DirectEntryLoggerStats(stats);
@@ -129,28 +132,30 @@ public class DirectEntryLogger implements EntryLogger {
// then the perThreadBufferSize can be lower than the readBufferSize
causing immediate eviction of readers
// from the cache
if (perThreadBufferSize < readBufferSize) {
- slog.kv("reason", "perThreadBufferSize lower than readBufferSize
(causes immediate reader cache eviction)")
- .kv("totalReadBufferSize", totalReadBufferSize)
- .kv("totalNumReadThreads", numReadThreads)
- .kv("readBufferSize", readBufferSize)
- .kv("perThreadBufferSize", perThreadBufferSize)
- .error(Events.ENTRYLOGGER_MISCONFIGURED);
+ log.error()
+ .attr("reason",
+ "perThreadBufferSize lower than readBufferSize (causes
immediate reader cache eviction)")
+ .attr("totalReadBufferSize", totalReadBufferSize)
+ .attr("totalNumReadThreads", numReadThreads)
+ .attr("readBufferSize", readBufferSize)
+ .attr("perThreadBufferSize", perThreadBufferSize)
+ .log("Entry logger misconfigured");
}
long maxCachedReadersPerThread = perThreadBufferSize / readBufferSize;
long maxCachedReaders = maxCachedReadersPerThread * numReadThreads;
- this.slog
- .kv("maxFileSize", maxFileSize)
- .kv("maxSaneEntrySize", maxSaneEntrySize)
- .kv("totalWriteBufferSize", totalWriteBufferSize)
- .kv("singleWriteBufferSize", singleWriteBufferSize)
- .kv("totalReadBufferSize", totalReadBufferSize)
- .kv("readBufferSize", readBufferSize)
- .kv("perThreadBufferSize", perThreadBufferSize)
- .kv("maxCachedReadersPerThread", maxCachedReadersPerThread)
- .kv("maxCachedReaders", maxCachedReaders)
- .info(Events.ENTRYLOGGER_CREATED);
+ log.info()
+ .attr("maxFileSize", maxFileSize)
+ .attr("maxSaneEntrySize", maxSaneEntrySize)
+ .attr("totalWriteBufferSize", totalWriteBufferSize)
+ .attr("singleWriteBufferSize", singleWriteBufferSize)
+ .attr("totalReadBufferSize", totalReadBufferSize)
+ .attr("readBufferSize", readBufferSize)
+ .attr("perThreadBufferSize", perThreadBufferSize)
+ .attr("maxCachedReadersPerThread", maxCachedReadersPerThread)
+ .attr("maxCachedReaders", maxCachedReaders)
+ .log("Entry logger created");
this.caches = ThreadLocal.withInitial(() -> {
RemovalListener<Integer, LogReader> rl = (notification) -> {
@@ -158,7 +163,7 @@ public class DirectEntryLogger implements EntryLogger {
notification.getValue().close();
this.stats.getCloseReaderCounter().inc();
} catch (IOException ioe) {
- slog.kv("logID",
notification.getKey()).error(Events.READER_CLOSE_ERROR);
+ log.error().attr("logID",
notification.getKey()).log("Failed to close entry log reader");
}
};
Cache<Integer, LogReader> cache = CacheBuilder.newBuilder()
@@ -190,7 +195,7 @@ public class DirectEntryLogger implements EntryLogger {
curWriter = new WriterWithMetadata(newDirectWriter(newId),
new EntryLogMetadata(newId),
allocator);
- slog.kv("newLogId", newId).info(Events.LOG_ROLL);
+ log.info().attr("newLogId", newId).log("Rolling to new log
file");
}
offset = curWriter.addEntry(ledgerId, buf);
@@ -378,7 +383,8 @@ public class DirectEntryLogger implements EntryLogger {
checkArgument(entryLogId < Integer.MAX_VALUE, "Entry log id must be an
int [%d]", entryLogId);
File file = logFile(ledgerDir, (int) entryLogId);
boolean result = file.delete();
- slog.kv("file", file).kv("logId", entryLogId).kv("result",
result).info(Events.LOG_DELETED);
+ log.info().attr("file", file).attr("logId", entryLogId).attr("result",
result)
+ .log("Log file deleted");
return result;
}
@@ -402,8 +408,8 @@ public class DirectEntryLogger implements EntryLogger {
try {
return readEntryLogIndex(entryLogId);
} catch (IOException e) {
- slog.kv("entryLogId", entryLogId).kv("reason", e.getMessage())
- .info(Events.READ_METADATA_FALLBACK);
+ log.info().attr("entryLogId", entryLogId).attr("reason",
e.getMessage())
+ .log("Falling back to scanning log for metadata");
return scanEntryLogMetadata(entryLogId, throttler);
}
}
@@ -450,7 +456,7 @@ public class DirectEntryLogger implements EntryLogger {
private LogWriter newDirectWriter(int newId) throws IOException {
unflushedLogs.add(newId);
LogWriter writer = new DirectWriter(newId, logFilename(ledgerDir,
newId), maxFileSize,
- writeExecutor, writeBuffers,
nativeIO, slog);
+ writeExecutor, writeBuffers,
nativeIO, log);
ByteBuf buf = allocator.buffer(Buffer.ALIGNMENT);
try {
Header.writeEmptyHeader(buf);
@@ -475,7 +481,7 @@ public class DirectEntryLogger implements EntryLogger {
int dstLogId = ids.nextId();
return DirectCompactionEntryLog.newLog((int) srcLogId, dstLogId,
ledgerDir,
maxFileSize, writeExecutor,
writeBuffers,
- nativeIO, allocator, slog);
+ nativeIO, allocator, log);
}
@Override
@@ -490,7 +496,7 @@ public class DirectEntryLogger implements EntryLogger {
try {
Files.deleteIfExists(f.toPath());
} catch (IOException ioe) {
- slog.kv("file",
f).warn(Events.COMPACTION_DELETE_FAILURE);
+ log.warn().attr("file", f).log("Failed to delete
compaction artifact");
}
}
@@ -503,7 +509,7 @@ public class DirectEntryLogger implements EntryLogger {
readBufferSize, maxSaneEntrySize,
nativeIO, allocator,
stats.getReadBlockStats(),
- slog));
+ log));
}
}
}
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectWriter.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectWriter.java
index 20a3d855b4..7a491df0e0 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectWriter.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectWriter.java
@@ -24,6 +24,7 @@ import static
com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
import static org.apache.bookkeeper.common.util.ExceptionMessageHelper.exMsg;
+import io.github.merlimat.slog.Logger;
import io.netty.buffer.ByteBuf;
import java.io.IOException;
import java.util.ArrayList;
@@ -33,7 +34,6 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import org.apache.bookkeeper.common.util.nativeio.NativeIO;
import org.apache.bookkeeper.common.util.nativeio.NativeIOException;
-import org.apache.bookkeeper.slogger.Slogger;
import org.apache.commons.lang3.SystemUtils;
class DirectWriter implements LogWriter {
@@ -45,7 +45,7 @@ class DirectWriter implements LogWriter {
final ExecutorService writeExecutor;
final Object bufferLock = new Object();
final List<Future<?>> outstandingWrites = new ArrayList<Future<?>>();
- final Slogger slog;
+ final Logger log;
Buffer nativeBuffer;
long offset;
private static volatile boolean useFallocate = true;
@@ -55,13 +55,13 @@ class DirectWriter implements LogWriter {
long maxFileSize,
ExecutorService writeExecutor,
BufferPool bufferPool,
- NativeIO nativeIO, Slogger slog) throws IOException {
+ NativeIO nativeIO, Logger log) throws IOException {
checkArgument(maxFileSize > 0, "Max file size (%d) must be positive");
this.id = id;
this.filename = filename;
this.writeExecutor = writeExecutor;
this.nativeIO = nativeIO;
- this.slog = slog.ctx(DirectWriter.class);
+ this.log = Logger.get(DirectWriter.class).with().ctx(log).build();
offset = 0;
@@ -78,7 +78,7 @@ class DirectWriter implements LogWriter {
if (useFallocate) {
if (!SystemUtils.IS_OS_LINUX) {
disableUseFallocate();
- this.slog.warn(Events.FALLOCATE_NOT_AVAILABLE);
+ this.log.warn("Fallocate not available");
} else {
try {
int ret = nativeIO.fallocate(fd,
NativeIO.FALLOC_FL_ZERO_RANGE, 0, maxFileSize);
@@ -87,10 +87,11 @@ class DirectWriter implements LogWriter {
// fallocate(2) is not supported on all filesystems.
Since this is an optimization, disable
// subsequent usage instead of failing the operation.
disableUseFallocate();
- this.slog.kv("message", ex.getMessage())
- .kv("file", filename)
- .kv("errno", ex.getErrno())
- .warn(Events.FALLOCATE_NOT_AVAILABLE);
+ this.log.warn()
+ .exceptionMessage(ex)
+ .attr("file", filename)
+ .attr("errno", ex.getErrno())
+ .log("Fallocate not available");
}
}
}
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/EntryLogIdsImpl.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/EntryLogIdsImpl.java
index 2b63ec74f2..b5cabfd483 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/EntryLogIdsImpl.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/EntryLogIdsImpl.java
@@ -20,6 +20,7 @@
*/
package org.apache.bookkeeper.bookie.storage.directentrylogger;
+import io.github.merlimat.slog.Logger;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
@@ -27,7 +28,6 @@ import java.util.List;
import java.util.concurrent.TimeUnit;
import org.apache.bookkeeper.bookie.LedgerDirsManager;
import org.apache.bookkeeper.bookie.storage.EntryLogIds;
-import org.apache.bookkeeper.slogger.Slogger;
import org.apache.bookkeeper.util.LedgerDirUtil;
import org.apache.commons.lang3.tuple.Pair;
/**
@@ -37,14 +37,14 @@ public class EntryLogIdsImpl implements EntryLogIds {
private final LedgerDirsManager ledgerDirsManager;
- private final Slogger slog;
+ private final Logger log;
private int nextId;
private int maxId;
public EntryLogIdsImpl(LedgerDirsManager ledgerDirsManager,
- Slogger slog) throws IOException {
+ Logger log) throws IOException {
this.ledgerDirsManager = ledgerDirsManager;
- this.slog = slog.ctx(EntryLogIdsImpl.class);
+ this.log = Logger.get(EntryLogIdsImpl.class).with().ctx(log).build();
findLargestGap();
}
@@ -74,10 +74,10 @@ public class EntryLogIdsImpl implements EntryLogIds {
Pair<Integer, Integer> gap = LedgerDirUtil.findLargestGap(currentIds);
nextId = gap.getLeft();
maxId = gap.getRight();
- slog.kv("dirs", ledgerDirsManager.getAllLedgerDirs())
- .kv("nextId", nextId)
- .kv("maxId", maxId)
- .kv("durationMs", TimeUnit.NANOSECONDS.toMillis(System.nanoTime()
- start))
- .info(Events.ENTRYLOG_IDS_CANDIDATES_SELECTED);
+ log.info().attr("dirs", ledgerDirsManager.getAllLedgerDirs())
+ .attr("nextId", nextId)
+ .attr("maxId", maxId)
+ .attr("durationMs",
TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start))
+ .log("Entry log ID candidates selected");
}
}
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/Events.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/Events.java
deleted file mode 100644
index 8f473c0f3f..0000000000
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/Events.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-package org.apache.bookkeeper.bookie.storage.directentrylogger;
-
-/**
- * Events.
- */
-public enum Events {
- /**
- * Fallocate is not available on this host. This generally indicates that
the process is running on a
- * non-Linux operating system. The lack of fallocate means that the
filesystem will have to do more
- * bookkeeping as data is written to the file, which will slow down writes.
- */
- FALLOCATE_NOT_AVAILABLE,
-
- /**
- * EntryLog ID candidates selected. These are the set entry log ID that
subsequent entry log files
- * will use. To find the candidates, the bookie lists all the log ids
which have already been used,
- * and finds the longest contiguous block of free ids. Over the lifetime
of a bookie, a log id can
- * be reused. This is not a problem, as the ids are only referenced from
the index, and an
- * entry log file will not be deleted if there are still references to it
in the index.
- * Generally candidates are selected at bookie boot, but they may also be
selected at a later time
- * if the current set of candidates is depleted.
- */
- ENTRYLOG_IDS_CANDIDATES_SELECTED,
-
- /**
- * The entrylogger({@link
org.apache.bookkeeper.bookie.storage.EntryLogger}) has been created.
- * This occurs during bookie bootup, and the same entry logger will be
used for the duration of
- * the bookie process's lifetime.
- */
- ENTRYLOGGER_CREATED,
-
- /**
- * The entrylogger has been configured in a way that will likely result in
errors during operation.
- */
- ENTRYLOGGER_MISCONFIGURED,
-
- /**
- * The entrylogger has started writing a new log file. The previous log
file may not
- * be entirely flushed when this is called, though they will be after an
explicit flush call.
- */
- LOG_ROLL,
-
- /**
- * A log file has been deleted. This happens as a result of GC, when all
entries in the file
- * belong to deleted ledgers, or compaction, where the live entries have
been copied to a new
- * log.
- */
- LOG_DELETED,
-
- /**
- * An error occurred closing an entrylog reader. This is non-fatal but it
may leak the file handle
- * and the memory buffer of the reader in question.
- */
- READER_CLOSE_ERROR,
-
- /**
- * An attempt to read entrylog metadata failed. Falling back to scanning
the log to get the metadata.
- * This can occur if a bookie crashes before closing the entrylog cleanly.
- */
- READ_METADATA_FALLBACK,
-
- /**
- * A new entrylog has been created. The filename has the format
[dstLogId].compacting, where dstLogId is
- * a new unique log ID. Entrylog compaction will copy live entries from an
existing src log to this new
- * compacting destination log. There is a 1-1 relationship between source
logs and destination log logs.
- * Once the copy completes, the compacting log will be marked as compacted
by renaming the file to
- * [dstLogId].log.[srcLogId].compacted, where srcLogId is the ID of the
entrylog from which the live entries
- * were copied. A new hardlink, [dstLogId].log, is created to point to the
same inode, making the entry
- * log available to be read. The compaction algorithm then updates the
index with the offsets of the entries
- * in the compacted destination log. Once complete, the index is flushed
and all intermediate files (links)
- * are deleted along with the original source log file.
- * The entry copying phase of compaction is expensive. The renaming and
linking in the algorithm exists so
- * if a failure occurs after copying has completed, the work will not need
to be redone.
- */
- COMPACTION_LOG_CREATED,
-
- /**
- * A partially compacted log has been recovered. The log file is of the
format [dstLogId].log.[srcLogId].compacted.
- * The log will be scanned and the index updated with the offsets of the
entries in the log. Once complete, the
- * log with ID srcLogId is deleted.
- * <p/>
- * See {@link #COMPACTION_LOG_CREATED} for more information on compaction.
- */
- COMPACTION_LOG_RECOVERED,
-
- /**
- * A compaction log has been marked as compacted. A log is marked as
compacted by renaming from [dstLogId].log to
- * [dstLogId].log.[srcLogId].compacted. All live entries from the src log
have been successfully copied to the
- * destination log, at this point.
- * <p/>
- * See {@link #COMPACTION_LOG_CREATED} for more information on compaction.
- */
- COMPACTION_MARK_COMPACTED,
-
- /**
- * A compacted log has been made available for reads. A log is made
available by creating a hardlink
- * pointing from [dstLogId].log, to [dstLogId].log.[srcLogId].compacted.
These files, pointing to the
- * same inode, will continue to exist until the compaction operation is
complete.
- * <p/>
- * A reader with a valid offset will now be able to read from this log, so
the index can be updated.
- * <p/>
- * See {@link #COMPACTION_LOG_CREATED} for more information on compaction.
- */
- COMPACTION_MAKE_AVAILABLE,
-
- /**
- * Compaction has been completed for a log.
- * All intermediatory files are deleted, along with the src entrylog file.
- * <p/>
- * See {@link #COMPACTION_LOG_CREATED} for more information on compaction.
- */
- COMPACTION_COMPLETE,
-
- /**
- * Failed to delete files while aborting a compaction operation. While
this is not fatal, it
- * can mean that there are issues writing to the filesystem that need to
be investigated.
- */
- COMPACTION_ABORT_EXCEPTION,
-
- /**
- * Failed to delete files while completing a compaction operation. While
this is not fatal, it
- * can mean that there are issues writing to the filesystem that need to
be investigated.
- */
- COMPACTION_DELETE_FAILURE,
-}
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorage.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorage.java
index 69964c8f81..6e9f317cbd 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorage.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorage.java
@@ -27,6 +27,7 @@ import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
+import io.github.merlimat.slog.Logger;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;
import io.netty.util.concurrent.DefaultThreadFactory;
@@ -64,7 +65,6 @@ import org.apache.bookkeeper.common.util.Watcher;
import org.apache.bookkeeper.common.util.nativeio.NativeIOImpl;
import org.apache.bookkeeper.conf.ServerConfiguration;
import org.apache.bookkeeper.meta.LedgerManager;
-import org.apache.bookkeeper.slogger.slf4j.Slf4jSlogger;
import org.apache.bookkeeper.stats.Gauge;
import org.apache.bookkeeper.stats.NullStatsLogger;
import org.apache.bookkeeper.stats.StatsLogger;
@@ -213,7 +213,7 @@ public class DbLedgerStorage implements LedgerStorage {
conf,
DIRECT_IO_ENTRYLOGGER_MAX_FD_CACHE_TIME_SECONDS,
DEFAULT_DIRECT_IO_MAX_FD_CACHE_TIME_SECONDS);
- Slf4jSlogger slog = new Slf4jSlogger(DbLedgerStorage.class);
+ Logger log = Logger.get(DbLedgerStorage.class);
entryLoggerWriteExecutor = Executors.newSingleThreadExecutor(
new DefaultThreadFactory("EntryLoggerWrite"));
entryLoggerFlushExecutor = Executors.newSingleThreadExecutor(
@@ -224,7 +224,7 @@ public class DbLedgerStorage implements LedgerStorage {
numReadThreads = conf.getServerNumIOThreads();
}
- entrylogger = new DirectEntryLogger(ledgerDir, new
EntryLogIdsImpl(ldm, slog),
+ entrylogger = new DirectEntryLogger(ledgerDir, new
EntryLogIdsImpl(ldm, log),
new NativeIOImpl(),
allocator, entryLoggerWriteExecutor,
entryLoggerFlushExecutor,
conf.getEntryLogSizeLimit(),
@@ -234,7 +234,7 @@ public class DbLedgerStorage implements LedgerStorage {
readBufferSize,
numReadThreads,
maxFdCacheTimeSeconds,
- slog, statsLogger);
+ log, statsLogger);
} else {
entrylogger = new DefaultEntryLogger(conf, ldm, null,
statsLogger, allocator);
}
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/GarbageCollectorThreadTest.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/GarbageCollectorThreadTest.java
index 01d7e80f10..ad2f0c9548 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/GarbageCollectorThreadTest.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/GarbageCollectorThreadTest.java
@@ -39,6 +39,8 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.openMocks;
+import io.github.merlimat.slog.Event;
+import io.github.merlimat.slog.Logger;
import java.io.File;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -47,7 +49,6 @@ import org.apache.bookkeeper.conf.ServerConfiguration;
import org.apache.bookkeeper.conf.TestBKConfiguration;
import org.apache.bookkeeper.meta.LedgerManager;
import org.apache.bookkeeper.meta.MockLedgerManager;
-import org.apache.bookkeeper.slogger.Slogger;
import org.apache.bookkeeper.stats.NullStatsLogger;
import org.apache.bookkeeper.stats.StatsLogger;
import org.apache.bookkeeper.test.TmpDirs;
@@ -64,7 +65,7 @@ import org.mockito.Spy;
*/
@SuppressWarnings("deprecation")
public class GarbageCollectorThreadTest {
- private static final Slogger slog = Slogger.CONSOLE;
+ private static final Logger LOG =
Logger.get(GarbageCollectorThreadTest.class);
private final TmpDirs tmpDirs = new TmpDirs();
@@ -125,17 +126,17 @@ public class GarbageCollectorThreadTest {
double usage = ((double) item / (double) items);
int index = mockGCThread.calculateUsageIndex(numBuckets, usage);
assertFalse("Boundary condition exceeded", index < 0 || index >=
numBuckets);
- slog.kv("usage", usage)
- .kv("index", index)
- .info("Mapped usage to index");
+ LOG.info().attr("usage", usage)
+ .attr("index", index)
+ .log("Mapped usage to index");
usageBuckets[index]++;
}
- Slogger sl = slog.ctx();
+ Event ev = LOG.info();
for (int i = 0; i < numBuckets; i++) {
- sl = sl.kv(bucketNames[i], usageBuckets[i]);
+ ev = ev.attr(bucketNames[i], usageBuckets[i]);
}
- sl.info("Compaction: entry log usage buckets");
+ ev.log("Compaction: entry log usage buckets");
int sum = 0;
for (int i = 0; i < numBuckets; i++) {
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/EntryLogTestUtils.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/EntryLogTestUtils.java
index f88e3883af..d6ab899cbf 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/EntryLogTestUtils.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/EntryLogTestUtils.java
@@ -24,6 +24,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import com.google.common.util.concurrent.MoreExecutors;
+import io.github.merlimat.slog.Logger;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;
import io.netty.buffer.Unpooled;
@@ -35,7 +36,6 @@ import
org.apache.bookkeeper.bookie.storage.directentrylogger.DirectEntryLogger;
import org.apache.bookkeeper.bookie.storage.directentrylogger.EntryLogIdsImpl;
import org.apache.bookkeeper.common.util.nativeio.NativeIOImpl;
import org.apache.bookkeeper.conf.ServerConfiguration;
-import org.apache.bookkeeper.slogger.Slogger;
import org.apache.bookkeeper.stats.NullStatsLogger;
import org.apache.bookkeeper.util.DiskChecker;
@@ -43,7 +43,7 @@ import org.apache.bookkeeper.util.DiskChecker;
* EntryLogTestUtils.
*/
public class EntryLogTestUtils {
- private static final Slogger slog = Slogger.CONSOLE;
+ private static final Logger LOG = Logger.get(EntryLogTestUtils.class);
public static LedgerDirsManager newDirsManager(File... ledgerDir) throws
Exception {
return new LedgerDirsManager(
@@ -62,7 +62,7 @@ public class EntryLogTestUtils {
curDir.mkdirs();
return new DirectEntryLogger(
- curDir, new EntryLogIdsImpl(newDirsManager(ledgerDir), slog),
+ curDir, new EntryLogIdsImpl(newDirsManager(ledgerDir), LOG),
new NativeIOImpl(),
ByteBufAllocator.DEFAULT,
MoreExecutors.newDirectExecutorService(),
@@ -74,7 +74,7 @@ public class EntryLogTestUtils {
64 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE);
+ LOG, NullStatsLogger.INSTANCE);
}
public static int logIdFromLocation(long location) {
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectEntryLogger.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectEntryLogger.java
index 56d3927dfe..07674e0ffd 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectEntryLogger.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectEntryLogger.java
@@ -30,6 +30,7 @@ import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.greaterThan;
import com.google.common.util.concurrent.MoreExecutors;
+import io.github.merlimat.slog.Logger;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;
import io.netty.util.ReferenceCountUtil;
@@ -46,7 +47,6 @@ import org.apache.bookkeeper.bookie.EntryLogMetadata;
import org.apache.bookkeeper.bookie.storage.EntryLogger;
import org.apache.bookkeeper.bookie.storage.MockEntryLogIds;
import org.apache.bookkeeper.common.util.nativeio.NativeIOImpl;
-import org.apache.bookkeeper.slogger.Slogger;
import org.apache.bookkeeper.stats.NullStatsLogger;
import org.apache.bookkeeper.test.TmpDirs;
import org.junit.jupiter.api.AfterEach;
@@ -61,7 +61,7 @@ import org.junit.jupiter.api.condition.OS;
@Slf4j
@DisabledOnOs(OS.WINDOWS)
public class TestDirectEntryLogger {
- private final Slogger slog = Slogger.CONSOLE;
+ private final Logger log = Logger.get(TestDirectEntryLogger.class);
private static final long ledgerId1 = 1234;
@@ -95,7 +95,7 @@ public class TestDirectEntryLogger {
64 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE)) {
+ log, NullStatsLogger.INSTANCE)) {
long loc1 = elog.addEntry(ledgerId1, e1.slice());
int logId1 = logIdFromLocation(loc1);
assertThat(logId1, equalTo(1));
@@ -133,7 +133,7 @@ public class TestDirectEntryLogger {
64 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE)) {
+ log, NullStatsLogger.INSTANCE)) {
long loc1 = elog.addEntry(ledgerId1, e1.slice());
long loc2 = elog.addEntry(ledgerId1, e2.slice());
elog.flush();
@@ -178,7 +178,7 @@ public class TestDirectEntryLogger {
maxFileSize, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE) {
+ log, NullStatsLogger.INSTANCE) {
@Override
LogReader newDirectReader(int logId) throws IOException {
outstandingReaders.incrementAndGet();
@@ -239,7 +239,7 @@ public class TestDirectEntryLogger {
64 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE)) {
+ log, NullStatsLogger.INSTANCE)) {
loc1 = elog.addEntry(ledgerId1, e1);
loc2 = elog.addEntry(ledgerId2, e2);
loc3 = elog.addEntry(ledgerId1, e3);
@@ -258,7 +258,7 @@ public class TestDirectEntryLogger {
64 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE)) {
+ log, NullStatsLogger.INSTANCE)) {
int logId = logIdFromLocation(loc1);
assertThat(logId, equalTo(logIdFromLocation(loc2)));
assertThat(logId, equalTo(logIdFromLocation(loc3)));
@@ -307,7 +307,7 @@ public class TestDirectEntryLogger {
64 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE)) {
+ log, NullStatsLogger.INSTANCE)) {
loc1 = writer.addEntry(ledgerId1, e1);
loc2 = writer.addEntry(ledgerId2, e2);
loc3 = writer.addEntry(ledgerId1, e3);
@@ -326,7 +326,7 @@ public class TestDirectEntryLogger {
64 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE)) {
+ log, NullStatsLogger.INSTANCE)) {
int logId = logIdFromLocation(loc1);
try {
reader.readEntryLogIndex(logId);
@@ -366,7 +366,7 @@ public class TestDirectEntryLogger {
16 * 1024 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE)) {
+ log, NullStatsLogger.INSTANCE)) {
for (int i = 0; i < ledgerCount; i++) {
long loc = writer.addEntry(i, makeEntry(i, 1L, 1000));
if (lastLoc >= 0) {
@@ -390,7 +390,7 @@ public class TestDirectEntryLogger {
16 * 1024 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE)) {
+ log, NullStatsLogger.INSTANCE)) {
int logId = logIdFromLocation(lastLoc);
EntryLogMetadata metaRead = reader.readEntryLogIndex(logId);
@@ -436,7 +436,7 @@ public class TestDirectEntryLogger {
32 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE);
+ log, NullStatsLogger.INSTANCE);
try { // not using try-with-resources because close needs to be
unblocked in failure
// Add entries.
// Ledger 1 is on first entry log
@@ -503,7 +503,7 @@ public class TestDirectEntryLogger {
64 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE)) {
+ log, NullStatsLogger.INSTANCE)) {
long loc1 = elog.addEntry(ledgerId1, e1.slice());
int logId1 = logIdFromLocation(loc1);
assertThat(logId1, equalTo(1));
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectEntryLoggerCompat.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectEntryLoggerCompat.java
index 92d332c075..42b312e92a 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectEntryLoggerCompat.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectEntryLoggerCompat.java
@@ -29,6 +29,7 @@ import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.not;
import com.google.common.util.concurrent.MoreExecutors;
+import io.github.merlimat.slog.Logger;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;
import io.netty.buffer.Unpooled;
@@ -41,7 +42,6 @@ import org.apache.bookkeeper.bookie.storage.EntryLogger;
import org.apache.bookkeeper.bookie.storage.MockEntryLogIds;
import org.apache.bookkeeper.common.util.nativeio.NativeIOImpl;
import org.apache.bookkeeper.conf.ServerConfiguration;
-import org.apache.bookkeeper.slogger.Slogger;
import org.apache.bookkeeper.stats.NullStatsLogger;
import org.apache.bookkeeper.test.TmpDirs;
import org.apache.bookkeeper.util.DiskChecker;
@@ -55,7 +55,7 @@ import org.junit.jupiter.api.condition.OS;
*/
@DisabledOnOs(OS.WINDOWS)
public class TestDirectEntryLoggerCompat {
- private final Slogger slog = Slogger.CONSOLE;
+ private final Logger log = Logger.get(TestDirectEntryLoggerCompat.class);
private static final long ledgerId1 = 1234;
private static final long ledgerId2 = 4567;
@@ -92,7 +92,7 @@ public class TestDirectEntryLoggerCompat {
64 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE)) {
+ log, NullStatsLogger.INSTANCE)) {
loc1 = elog.addEntry(ledgerId1, e1.slice());
loc2 = elog.addEntry(ledgerId1, e2.slice());
loc3 = elog.addEntry(ledgerId1, e3.slice());
@@ -134,7 +134,7 @@ public class TestDirectEntryLoggerCompat {
64 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE)) {
+ log, NullStatsLogger.INSTANCE)) {
assertEntryEquals(elog.readEntry(ledgerId1, 1L, loc1), e1);
assertEntryEquals(elog.readEntry(ledgerId1, 2L, loc2), e2);
assertEntryEquals(elog.readEntry(ledgerId1, 3L, loc3), e3);
@@ -165,7 +165,7 @@ public class TestDirectEntryLoggerCompat {
64 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE)) {
+ log, NullStatsLogger.INSTANCE)) {
loc1 = elog.addEntry(ledgerId1, e1.slice());
loc2 = elog.addEntry(ledgerId1, e2.slice());
loc3 = elog.addEntry(ledgerId1, e3.slice());
@@ -204,7 +204,7 @@ public class TestDirectEntryLoggerCompat {
64 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE)) {
+ log, NullStatsLogger.INSTANCE)) {
loc1 = elog.addEntry(ledgerId1, e1);
loc2 = elog.addEntry(ledgerId2, e2);
loc3 = elog.addEntry(ledgerId1, e3);
@@ -255,7 +255,7 @@ public class TestDirectEntryLoggerCompat {
64 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE)) {
+ log, NullStatsLogger.INSTANCE)) {
loc1 = elog.addEntry(ledgerId1, e1);
loc2 = elog.addEntry(ledgerId2, e2);
loc3 = elog.addEntry(ledgerId1, e3);
@@ -312,7 +312,7 @@ public class TestDirectEntryLoggerCompat {
64 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE)) {
+ log, NullStatsLogger.INSTANCE)) {
int logId = logIdFromLocation(loc1);
assertThat(logId, equalTo(logIdFromLocation(loc2)));
assertThat(logId, equalTo(logIdFromLocation(loc3)));
@@ -371,7 +371,7 @@ public class TestDirectEntryLoggerCompat {
64 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE)) {
+ log, NullStatsLogger.INSTANCE)) {
loc1 = elog.addEntry(ledgerId1, e1.slice());
loc2 = elog.addEntry(ledgerId1, e2.slice());
loc3 = elog.addEntry(ledgerId1, e3.slice());
@@ -436,7 +436,7 @@ public class TestDirectEntryLoggerCompat {
64 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE)) {
+ log, NullStatsLogger.INSTANCE)) {
loc6 = elog.addEntry(ledgerId1, e6.slice());
loc7 = elog.addEntry(ledgerId1, e7.slice());
elog.flush();
@@ -534,7 +534,7 @@ public class TestDirectEntryLoggerCompat {
64 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE)) {
+ log, NullStatsLogger.INSTANCE)) {
loc3 = elog.addEntry(ledgerId1, e3.slice());
loc4 = elog.addEntry(ledgerId1, e4.slice());
loc5 = elog.addEntry(ledgerId1, e5.slice());
@@ -604,7 +604,7 @@ public class TestDirectEntryLoggerCompat {
64 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE)) {
+ log, NullStatsLogger.INSTANCE)) {
loc8 = elog.addEntry(ledgerId1, e8.slice());
loc9 = elog.addEntry(ledgerId1, e9.slice());
elog.flush();
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectReader.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectReader.java
index 03bd276e12..04cd4a0c42 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectReader.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectReader.java
@@ -25,6 +25,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import com.google.common.util.concurrent.MoreExecutors;
+import io.github.merlimat.slog.Logger;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;
import io.netty.buffer.Unpooled;
@@ -40,7 +41,6 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.apache.bookkeeper.common.util.nativeio.NativeIOException;
import org.apache.bookkeeper.common.util.nativeio.NativeIOImpl;
-import org.apache.bookkeeper.slogger.Slogger;
import org.apache.bookkeeper.stats.NullStatsLogger;
import org.apache.bookkeeper.stats.OpStatsLogger;
import org.apache.bookkeeper.test.TmpDirs;
@@ -270,7 +270,7 @@ public class TestDirectReader {
try (BufferPool buffers = new BufferPool(new NativeIOImpl(),
ByteBufAllocator.DEFAULT, Buffer.ALIGNMENT, 8);
LogWriter writer = new DirectWriter(1234, logFilename(ledgerDir,
1234),
1 << 20,
MoreExecutors.newDirectExecutorService(),
- buffers, new NativeIOImpl(),
Slogger.CONSOLE)) {
+ buffers, new NativeIOImpl(),
Logger.get(TestDirectReader.class))) {
for (int i = 0; i < 1000; i++) {
ByteBuf bb = Unpooled.buffer(entrySize);
int pattern = 0xbeef + i;
@@ -317,7 +317,7 @@ public class TestDirectReader {
try (BufferPool buffers = new BufferPool(new NativeIOImpl(),
ByteBufAllocator.DEFAULT, Buffer.ALIGNMENT, 8);
LogWriter writer = new DirectWriter(1234, logFilename(ledgerDir,
1234),
1 << 20,
MoreExecutors.newDirectExecutorService(),
- buffers, new NativeIOImpl(),
Slogger.CONSOLE);
+ buffers, new NativeIOImpl(),
Logger.get(TestDirectReader.class));
LogReader reader = new DirectReader(1234, logFilename(ledgerDir,
1234),
ByteBufAllocator.DEFAULT,
new NativeIOImpl(),
Buffer.ALIGNMENT,
@@ -355,7 +355,7 @@ public class TestDirectReader {
try (BufferPool buffers = new BufferPool(new NativeIOImpl(),
ByteBufAllocator.DEFAULT, Buffer.ALIGNMENT, 8);
LogWriter writer = new DirectWriter(1234, logFilename(ledgerDir,
1234),
1 << 20,
MoreExecutors.newDirectExecutorService(),
- buffers, new NativeIOImpl(),
Slogger.CONSOLE);
+ buffers, new NativeIOImpl(),
Logger.get(TestDirectReader.class));
LogReader reader = new DirectReader(1234, logFilename(ledgerDir,
1234),
ByteBufAllocator.DEFAULT,
new NativeIOImpl(),
Buffer.ALIGNMENT,
@@ -406,7 +406,7 @@ public class TestDirectReader {
ByteBufAllocator.DEFAULT, Buffer.ALIGNMENT * 10, 8);
LogWriter writer = new DirectWriter(1234, logFilename(ledgerDir,
1234), 1 << 20,
MoreExecutors.newDirectExecutorService(),
- buffers, new NativeIOImpl(),
Slogger.CONSOLE)) {
+ buffers, new NativeIOImpl(),
Logger.get(TestDirectReader.class))) {
ByteBuf b1 = Unpooled.buffer(entrySize);
TestBuffer.fillByteBuf(b1, 0xfeedfeed);
int offset1 = writer.writeDelimited(b1);
@@ -455,7 +455,7 @@ public class TestDirectReader {
try (BufferPool buffers = new BufferPool(new NativeIOImpl(),
ByteBufAllocator.DEFAULT, Buffer.ALIGNMENT * 8, 8);
LogWriter writer = new DirectWriter(1234, logFilename(ledgerDir,
1234), 1 << 20,
MoreExecutors.newDirectExecutorService(), buffers, new NativeIOImpl(),
- Slogger.CONSOLE)) {
+
Logger.get(TestDirectReader.class))) {
ByteBuf b1 = Unpooled.buffer(entrySize);
TestBuffer.fillByteBuf(b1, 0xfeedfeed);
offset1 = writer.writeDelimited(b1);
@@ -499,7 +499,7 @@ public class TestDirectReader {
try (BufferPool buffers = new BufferPool(new NativeIOImpl(),
ByteBufAllocator.DEFAULT, Buffer.ALIGNMENT, 8);
LogWriter writer = new DirectWriter(logId, logFilename(directory,
logId),
fileSize,
MoreExecutors.newDirectExecutorService(),
- buffers, new NativeIOImpl(),
Slogger.CONSOLE)) {
+ buffers, new NativeIOImpl(),
Logger.get(TestDirectReader.class))) {
for (int written = 0; written < fileSize; written +=
Buffer.ALIGNMENT) {
ByteBuf bb = Unpooled.buffer(Buffer.ALIGNMENT);
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectWriter.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectWriter.java
index 4f1f3033ea..a855f74037 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectWriter.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectWriter.java
@@ -25,6 +25,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import com.google.common.util.concurrent.MoreExecutors;
+import io.github.merlimat.slog.Logger;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;
import io.netty.buffer.Unpooled;
@@ -38,7 +39,6 @@ import java.util.concurrent.Future;
import org.apache.bookkeeper.common.util.nativeio.NativeIO;
import org.apache.bookkeeper.common.util.nativeio.NativeIOException;
import org.apache.bookkeeper.common.util.nativeio.NativeIOImpl;
-import org.apache.bookkeeper.slogger.Slogger;
import org.apache.bookkeeper.test.TmpDirs;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
@@ -51,7 +51,7 @@ import org.junit.jupiter.api.condition.OS;
*/
@DisabledOnOs(OS.WINDOWS)
public class TestDirectWriter {
- private static final Slogger slog = Slogger.CONSOLE;
+ private static final Logger LOG = Logger.get(TestDirectWriter.class);
private final TmpDirs tmpDirs = new TmpDirs();
private final ExecutorService writeExecutor =
Executors.newSingleThreadExecutor();
@@ -69,7 +69,7 @@ public class TestDirectWriter {
try (BufferPool buffers = new BufferPool(new NativeIOImpl(),
ByteBufAllocator.DEFAULT, Buffer.ALIGNMENT, 8);
LogWriter writer = new DirectWriter(5678,
logFilename(ledgerDir, 5678),
1 << 24, writeExecutor,
- buffers, new NativeIOImpl(), Slogger.CONSOLE)) {
+ buffers, new NativeIOImpl(), LOG)) {
ByteBuf bb = Unpooled.buffer(Buffer.ALIGNMENT);
TestBuffer.fillByteBuf(bb, 0xdededede);
writer.writeAt(1234, bb);
@@ -84,7 +84,7 @@ public class TestDirectWriter {
Assertions.assertThrows(IllegalArgumentException.class, () -> {
try (BufferPool buffers = new BufferPool(new NativeIOImpl(),
ByteBufAllocator.DEFAULT, Buffer.ALIGNMENT, 8);
LogWriter writer = new DirectWriter(5678,
logFilename(ledgerDir, 5678), 1 << 24, writeExecutor,
- buffers, new NativeIOImpl(), Slogger.CONSOLE)) {
+ buffers, new NativeIOImpl(), LOG)) {
ByteBuf bb = Unpooled.buffer(123);
TestBuffer.fillByteBuf(bb, 0xdededede);
writer.writeAt(0, bb);
@@ -98,7 +98,7 @@ public class TestDirectWriter {
File ledgerDir = tmpDirs.createNew("writeAlignment", "logs");
try (BufferPool buffers = new BufferPool(new NativeIOImpl(),
ByteBufAllocator.DEFAULT, Buffer.ALIGNMENT, 8);
LogWriter writer = new DirectWriter(5678, logFilename(ledgerDir,
5678), 1 << 24, writeExecutor,
- buffers, new NativeIOImpl(),
Slogger.CONSOLE)) {
+ buffers, new NativeIOImpl(),
LOG)) {
ByteBuf bb = Unpooled.buffer(Buffer.ALIGNMENT);
TestBuffer.fillByteBuf(bb, 0xdededede);
writer.writeAt(Buffer.ALIGNMENT * 2, bb);
@@ -113,7 +113,7 @@ public class TestDirectWriter {
try (BufferPool buffers = new BufferPool(new NativeIOImpl(),
ByteBufAllocator.DEFAULT,
Buffer.ALIGNMENT, 1); // only one buffer available, so we
can't flush in bg
LogWriter writer = new DirectWriter(5678, logFilename(ledgerDir,
5678), 1 << 24, writeExecutor,
- buffers, new NativeIOImpl(),
Slogger.CONSOLE)) {
+ buffers, new NativeIOImpl(),
LOG)) {
ByteBuf bb = Unpooled.buffer(Buffer.ALIGNMENT / 2);
TestBuffer.fillByteBuf(bb, 0xdededede);
writer.writeDelimited(bb);
@@ -140,7 +140,7 @@ public class TestDirectWriter {
Assertions.assertThrows(IOException.class, () -> {
try (BufferPool buffers = new BufferPool(new NativeIOImpl(),
ByteBufAllocator.DEFAULT, Buffer.ALIGNMENT, 8);
LogWriter writer = new DirectWriter(5678,
logFilename(ledgerDir, 5678), 1 << 24, writeExecutor,
- buffers, io, Slogger.CONSOLE)) {
+ buffers, io, LOG)) {
for (int i = 0; i < 10; i++) {
ByteBuf bb = Unpooled.buffer(Buffer.ALIGNMENT / 2);
TestBuffer.fillByteBuf(bb, 0xdededede);
@@ -170,7 +170,7 @@ public class TestDirectWriter {
Assertions.assertThrows(IOException.class, () -> {
try (BufferPool buffers = new BufferPool(new NativeIOImpl(),
ByteBufAllocator.DEFAULT, 1 << 14, 8);
LogWriter writer = new DirectWriter(5678,
logFilename(ledgerDir, 5678), 1 << 24, writeExecutor,
- buffers, io, Slogger.CONSOLE)) {
+ buffers, io, LOG)) {
ByteBuf bb = Unpooled.buffer(Buffer.ALIGNMENT);
TestBuffer.fillByteBuf(bb, 0xdededede);
writer.writeAt(0, bb);
@@ -184,7 +184,7 @@ public class TestDirectWriter {
File ledgerDir = tmpDirs.createNew("paddingWrite", "logs");
try (BufferPool buffers = new BufferPool(new NativeIOImpl(),
ByteBufAllocator.DEFAULT, 1 << 14, 8);
LogWriter writer = new DirectWriter(5678, logFilename(ledgerDir,
5678), 1 << 24, writeExecutor,
- buffers, new NativeIOImpl(),
Slogger.CONSOLE)) {
+ buffers, new NativeIOImpl(),
LOG)) {
ByteBuf bb = Unpooled.buffer(Buffer.ALIGNMENT);
TestBuffer.fillByteBuf(bb, 0xdededede);
bb.writerIndex(123);
@@ -213,7 +213,7 @@ public class TestDirectWriter {
try (BufferPool buffers = new BufferPool(new NativeIOImpl(),
ByteBufAllocator.DEFAULT, 1 << 14, 8);
LogWriter writer = new DirectWriter(1234,
logFilename(ledgerDir, 1234),
1 << 24, writeExecutor,
- buffers, new
NativeIOImpl(), Slogger.CONSOLE)) {
+ buffers, new
NativeIOImpl(), LOG)) {
CompletableFuture<?> blocker = new CompletableFuture<>();
writeExecutor.submit(() -> {
blocker.join();
@@ -254,7 +254,7 @@ public class TestDirectWriter {
Assertions.assertThrows(IOException.class, () -> {
new DirectWriter(1234, logFilename(ledgerDir, 1234),
1 << 30, MoreExecutors.newDirectExecutorService(),
- buffers, new NativeIOImpl(), Slogger.CONSOLE);
+ buffers, new NativeIOImpl(), LOG);
});
}
}
@@ -272,7 +272,7 @@ public class TestDirectWriter {
try (BufferPool buffers = new BufferPool(new NativeIOImpl(),
ByteBufAllocator.DEFAULT, 1 << 14, 8);
LogWriter writer = new DirectWriter(3456, logFilename(ledgerDir,
3456),
1 << 24, writeExecutor,
- buffers, nativeIO,
Slogger.CONSOLE)) {
+ buffers, nativeIO, LOG)) {
ByteBuf bb = Unpooled.buffer(Buffer.ALIGNMENT);
TestBuffer.fillByteBuf(bb, 0xdeadbeef);
@@ -296,7 +296,7 @@ public class TestDirectWriter {
LogWriter writer = new DirectWriter(3456, logFilename(ledgerDir,
3456),
(long) Integer.MAX_VALUE +
(Buffer.ALIGNMENT * 100),
writeExecutor,
- buffers, new NativeIOImpl(),
Slogger.CONSOLE)) {
+ buffers, new NativeIOImpl(),
LOG)) {
ByteBuf b1 = Unpooled.buffer(Buffer.ALIGNMENT - (Integer.BYTES *
2) - 1);
TestBuffer.fillByteBuf(b1, 0xdeadbeef);
@@ -324,7 +324,7 @@ public class TestDirectWriter {
static ByteBuf readIntoByteBuf(File directory, int logId) throws Exception
{
byte[] bytes = new byte[1024];
File file = new File(DirectEntryLogger.logFilename(directory, logId));
- slog.kv("filename", file.toString()).info("reading in");
+ LOG.info().attr("filename", file.toString()).log("Reading log file");
ByteBuf byteBuf = Unpooled.buffer((int) file.length());
try (FileInputStream is = new FileInputStream(file)) {
int bytesRead = is.read(bytes);
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestEntryLogIds.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestEntryLogIds.java
index de34f17499..670b5249a1 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestEntryLogIds.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestEntryLogIds.java
@@ -30,12 +30,12 @@ import static org.hamcrest.Matchers.greaterThan;
import static org.junit.jupiter.api.Assertions.assertEquals;
import com.google.common.collect.Lists;
+import io.github.merlimat.slog.Logger;
import io.netty.buffer.ByteBuf;
import java.io.File;
import org.apache.bookkeeper.bookie.LedgerDirsManager;
import org.apache.bookkeeper.bookie.storage.EntryLogIds;
import org.apache.bookkeeper.bookie.storage.EntryLogger;
-import org.apache.bookkeeper.slogger.Slogger;
import org.apache.bookkeeper.test.TmpDirs;
import org.apache.bookkeeper.util.LedgerDirUtil;
import org.apache.commons.lang3.tuple.Pair;
@@ -46,7 +46,7 @@ import org.junit.jupiter.api.Test;
* TestEntryLogIds.
*/
public class TestEntryLogIds {
- private static final Slogger slog = Slogger.CONSOLE;
+ private static final Logger LOG = Logger.get(TestEntryLogIds.class);
private final TmpDirs tmpDirs = new TmpDirs();
@@ -72,7 +72,7 @@ public class TestEntryLogIds {
highestSoFar = logId2;
}
- EntryLogIds ids = new EntryLogIdsImpl(newDirsManager(ledgerDir), slog);
+ EntryLogIds ids = new EntryLogIdsImpl(newDirsManager(ledgerDir), LOG);
int logId3 = ids.nextId();
assertThat(logId3, greaterThan(highestSoFar));
touchLog(ledgerDir, logId3);
@@ -101,7 +101,7 @@ public class TestEntryLogIds {
File ledgerDir = tmpDirs.createNew("entryLogIds", "ledgers");
int highestSoFar = -1;
- EntryLogIds ids = new EntryLogIdsImpl(newDirsManager(ledgerDir), slog);
+ EntryLogIds ids = new EntryLogIdsImpl(newDirsManager(ledgerDir), LOG);
int logId1 = ids.nextId();
assertThat(logId1, greaterThan(highestSoFar));
touchLog(ledgerDir, logId1);
@@ -122,7 +122,7 @@ public class TestEntryLogIds {
}
// reinitialize to pick up legacy
- ids = new EntryLogIdsImpl(newDirsManager(ledgerDir), slog);
+ ids = new EntryLogIdsImpl(newDirsManager(ledgerDir), LOG);
int logId4 = ids.nextId();
assertThat(logId4, greaterThan(highestSoFar));
touchLog(ledgerDir, logId4);
@@ -143,7 +143,7 @@ public class TestEntryLogIds {
//case 1: use root ledgerDirsManager
LedgerDirsManager ledgerDirsManager = newDirsManager(ledgerDir1,
ledgerDir2);
- EntryLogIds ids1 = new EntryLogIdsImpl(ledgerDirsManager, slog);
+ EntryLogIds ids1 = new EntryLogIdsImpl(ledgerDirsManager, LOG);
for (int i = 0; i < 10; i++) {
int logId = ids1.nextId();
File log1 = new File(ledgerDir1 + "/current", logId + ".log");
@@ -151,7 +151,7 @@ public class TestEntryLogIds {
assertEquals(logId, i);
}
- EntryLogIds ids2 = new EntryLogIdsImpl(ledgerDirsManager, slog);
+ EntryLogIds ids2 = new EntryLogIdsImpl(ledgerDirsManager, LOG);
for (int i = 0; i < 10; i++) {
int logId = ids2.nextId();
assertEquals(logId, 10 + i);
@@ -160,7 +160,7 @@ public class TestEntryLogIds {
// case 2: new LedgerDirsManager for per directory
LedgerDirsManager ledgerDirsManager3 = newDirsManager(ledgerDir3);
LedgerDirsManager ledgerDirsManager4 = newDirsManager(ledgerDir4);
- EntryLogIds ids3 = new EntryLogIdsImpl(ledgerDirsManager3, slog);
+ EntryLogIds ids3 = new EntryLogIdsImpl(ledgerDirsManager3, LOG);
for (int i = 0; i < 10; i++) {
int logId = ids3.nextId();
File log1 = new File(ledgerDir3 + "/current", logId + ".log");
@@ -168,7 +168,7 @@ public class TestEntryLogIds {
assertEquals(logId, i);
}
- EntryLogIds ids4 = new EntryLogIdsImpl(ledgerDirsManager4, slog);
+ EntryLogIds ids4 = new EntryLogIdsImpl(ledgerDirsManager4, LOG);
for (int i = 0; i < 10; i++) {
int logId = ids4.nextId();
assertEquals(logId, i);
@@ -203,7 +203,7 @@ public class TestEntryLogIds {
highestSoFar = logId3;
}
- EntryLogIds ids = new EntryLogIdsImpl(newDirsManager(ledgerDir1,
ledgerDir2, ledgerDir3), slog);
+ EntryLogIds ids = new EntryLogIdsImpl(newDirsManager(ledgerDir1,
ledgerDir2, ledgerDir3), LOG);
int logId4 = ids.nextId();
assertThat(logId4, greaterThan(highestSoFar));
touchLog(ledgerDir2, logId4);
@@ -221,10 +221,10 @@ public class TestEntryLogIds {
@Test
public void testWrapAround() throws Exception {
File ledgerDir = tmpDirs.createNew("entryLogIds", "ledgers");
- new EntryLogIdsImpl(newDirsManager(ledgerDir), slog);
+ new EntryLogIdsImpl(newDirsManager(ledgerDir), LOG);
touchLog(ledgerDir, Integer.MAX_VALUE - 1);
- EntryLogIds ids = new EntryLogIdsImpl(newDirsManager(ledgerDir), slog);
+ EntryLogIds ids = new EntryLogIdsImpl(newDirsManager(ledgerDir), LOG);
int logId = ids.nextId();
assertThat(logId, equalTo(0));
}
@@ -236,11 +236,11 @@ public class TestEntryLogIds {
// the directory concurrently, the transactional rename will prevent
data
// loss.
File ledgerDir = tmpDirs.createNew("entryLogIds", "ledgers");
- new EntryLogIdsImpl(newDirsManager(ledgerDir), slog);
+ new EntryLogIdsImpl(newDirsManager(ledgerDir), LOG);
touchLog(ledgerDir, 123);
touchCompacting(ledgerDir, 129);
- EntryLogIds ids = new EntryLogIdsImpl(newDirsManager(ledgerDir), slog);
+ EntryLogIds ids = new EntryLogIdsImpl(newDirsManager(ledgerDir), LOG);
int logId = ids.nextId();
assertThat(logId, equalTo(124));
}
@@ -248,11 +248,11 @@ public class TestEntryLogIds {
@Test
public void testCompactedLogsConsidered() throws Exception {
File ledgerDir = tmpDirs.createNew("entryLogIds", "ledgers");
- new EntryLogIdsImpl(newDirsManager(ledgerDir), slog);
+ new EntryLogIdsImpl(newDirsManager(ledgerDir), LOG);
touchLog(ledgerDir, 123);
touchCompacted(ledgerDir, 129, 123);
- EntryLogIds ids = new EntryLogIdsImpl(newDirsManager(ledgerDir), slog);
+ EntryLogIds ids = new EntryLogIdsImpl(newDirsManager(ledgerDir), LOG);
int logId = ids.nextId();
assertThat(logId, equalTo(130));
}
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestMetadata.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestMetadata.java
index e44a28cf8d..b407593765 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestMetadata.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestMetadata.java
@@ -24,6 +24,7 @@ import static
org.apache.bookkeeper.bookie.storage.directentrylogger.DirectEntry
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
+import io.github.merlimat.slog.Logger;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;
import java.io.File;
@@ -31,7 +32,6 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.apache.bookkeeper.bookie.EntryLogMetadata;
import org.apache.bookkeeper.common.util.nativeio.NativeIOImpl;
-import org.apache.bookkeeper.slogger.Slogger;
import org.apache.bookkeeper.stats.NullStatsLogger;
import org.apache.bookkeeper.stats.OpStatsLogger;
import org.apache.bookkeeper.test.TmpDirs;
@@ -60,7 +60,7 @@ public class TestMetadata {
try (BufferPool buffers = new BufferPool(new NativeIOImpl(),
ByteBufAllocator.DEFAULT, Buffer.ALIGNMENT, 8);
LogWriter writer = new DirectWriter(logId, logFilename(ledgerDir,
logId),
1 << 24, writeExecutor,
- buffers, new NativeIOImpl(), Slogger.CONSOLE)) {
+ buffers, new NativeIOImpl(),
Logger.get(TestMetadata.class))) {
long offset = 4096L;
writer.position(offset);
EntryLogMetadata entryLogMetadata = new EntryLogMetadata(logId);
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestTransactionalEntryLogCompactor.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestTransactionalEntryLogCompactor.java
index 3f072846f6..6269b18c62 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestTransactionalEntryLogCompactor.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestTransactionalEntryLogCompactor.java
@@ -35,6 +35,7 @@ import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.not;
import com.google.common.util.concurrent.MoreExecutors;
+import io.github.merlimat.slog.Logger;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;
import java.io.File;
@@ -53,7 +54,6 @@ import org.apache.bookkeeper.bookie.storage.EntryLogScanner;
import org.apache.bookkeeper.bookie.storage.EntryLogger;
import org.apache.bookkeeper.common.util.nativeio.NativeIOImpl;
import org.apache.bookkeeper.conf.ServerConfiguration;
-import org.apache.bookkeeper.slogger.Slogger;
import org.apache.bookkeeper.stats.NullStatsLogger;
import org.apache.bookkeeper.test.TmpDirs;
import org.junit.jupiter.api.AfterEach;
@@ -66,7 +66,7 @@ import org.junit.jupiter.api.condition.OS;
*/
@DisabledOnOs(OS.WINDOWS)
public class TestTransactionalEntryLogCompactor {
- private static final Slogger slog = Slogger.CONSOLE;
+ private static final Logger LOG =
Logger.get(TestTransactionalEntryLogCompactor.class);
private final TmpDirs tmpDirs = new TmpDirs();
private static final long deadLedger = 1L;
@@ -537,7 +537,7 @@ public class TestTransactionalEntryLogCompactor {
curDir.mkdirs();
return new DirectEntryLogger(
- curDir, new EntryLogIdsImpl(newDirsManager(ledgerDir), slog),
+ curDir, new EntryLogIdsImpl(newDirsManager(ledgerDir), LOG),
new NativeIOImpl(),
ByteBufAllocator.DEFAULT,
MoreExecutors.newDirectExecutorService(),
@@ -549,7 +549,7 @@ public class TestTransactionalEntryLogCompactor {
4 * 1024, // read buffer size
1, // numReadThreads
300, // max fd cache time in seconds
- slog, NullStatsLogger.INSTANCE) {
+ LOG, NullStatsLogger.INSTANCE) {
@Override
public CompactionEntryLog newCompactionLog(long logToCompact)
throws IOException {
return override.apply(super.newCompactionLog(logToCompact));
diff --git a/bookkeeper-slogger/api/pom.xml b/bookkeeper-slogger/api/pom.xml
deleted file mode 100644
index 59dd4459d9..0000000000
--- a/bookkeeper-slogger/api/pom.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <artifactId>bookkeeper-slogger-parent</artifactId>
- <groupId>org.apache.bookkeeper</groupId>
- <version>4.18.0-SNAPSHOT</version>
- <relativePath>..</relativePath>
- </parent>
- <groupId>org.apache.bookkeeper</groupId>
- <artifactId>bookkeeper-slogger-api</artifactId>
- <name>Apache BookKeeper :: Structured Logger :: API</name>
-</project>
diff --git
a/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/AbstractSlogger.java
b/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/AbstractSlogger.java
deleted file mode 100644
index 55ca52d38b..0000000000
---
a/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/AbstractSlogger.java
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bookkeeper.slogger;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Optional;
-import java.util.function.BiConsumer;
-
-/**
- * Abstract implementation of slogger. Keeps track of key value pairs.
- */
-public abstract class AbstractSlogger implements Slogger, Iterable<Object> {
- /**
- * Levels at which slogger can slog.
- */
- public enum Level {
- INFO,
- WARN,
- ERROR
- }
-
- private static final int MAX_DEPTH = 3;
- private List<String> parentCtx;
-
- private ThreadLocal<List<Object>> kvs = new ThreadLocal<List<Object>>() {
- @Override
- protected List<Object> initialValue() {
- return new ArrayList<>();
- }
- };
- private ThreadLocal<List<Object>> flattenedTls =
ThreadLocal.withInitial(ArrayList::new);
-
- protected AbstractSlogger(Iterable<Object> parentCtx) {
- List<String> flattened = new ArrayList<>();
- flattenKeyValues(parentCtx.iterator(), (k, v) -> {
- flattened.add(k);
- flattened.add(v);
- });
- this.parentCtx = Collections.unmodifiableList(flattened);
- }
-
- protected abstract Slogger newSlogger(Optional<Class<?>> clazz,
Iterable<Object> parent);
- protected abstract void doLog(Level level, Enum<?> event, String message,
- Throwable throwable, List<Object> keyValues);
-
- private void flattenAndLog(Level level, Enum<?> event, String message,
- Throwable throwable) {
- List<Object> flattened = flattenedTls.get();
- flattened.clear();
-
- flattenKeyValues(this::addToFlattened);
- doLog(level, event, message, throwable, flattened);
- }
-
- @Override
- public void info(String message) {
- flattenAndLog(Level.INFO, null, message, null);
- }
-
- @Override
- public void info(String message, Throwable cause) {
- flattenAndLog(Level.INFO, null, message, cause);
- }
-
- @Override
- public void info(Enum<?> event) {
- flattenAndLog(Level.INFO, event, null, null);
- }
-
- @Override
- public void info(Enum<?> event, Throwable cause) {
- flattenAndLog(Level.INFO, event, null, cause);
- }
-
- @Override
- public void warn(String message) {
- flattenAndLog(Level.WARN, null, message, null);
- }
-
- @Override
- public void warn(String message, Throwable cause) {
- flattenAndLog(Level.WARN, null, message, cause);
- }
-
- @Override
- public void warn(Enum<?> event) {
- flattenAndLog(Level.WARN, event, null, null);
- }
-
- @Override
- public void warn(Enum<?> event, Throwable cause) {
- flattenAndLog(Level.WARN, event, null, cause);
- }
-
- @Override
- public void error(String message) {
- flattenAndLog(Level.ERROR, null, message, null);
- }
-
- @Override
- public void error(String message, Throwable cause) {
- flattenAndLog(Level.ERROR, null, message, cause);
- }
-
- @Override
- public void error(Enum<?> event) {
- flattenAndLog(Level.ERROR, event, null, null);
- }
-
- @Override
- public void error(Enum<?> event, Throwable cause) {
- flattenAndLog(Level.ERROR, event, null, cause);
- }
-
- @Override
- public Slogger ctx() {
- try {
- return newSlogger(Optional.empty(), this);
- } finally {
- kvs.get().clear();
- }
- }
-
- @Override
- public Slogger ctx(Class<?> clazz) {
- try {
- return newSlogger(Optional.of(clazz), this);
- } finally {
- kvs.get().clear();
- }
- }
-
- @Override
- public Iterator<Object> iterator() {
- CtxIterator iterator = this.iterator.get();
- iterator.reset();
- return iterator;
- }
-
- protected void clearCurrentCtx() {
- kvs.get().clear();
- }
-
- private void addToFlattened(String key, String value) {
- flattenedTls.get().add(key);
- flattenedTls.get().add(value);
- }
-
- protected void flattenKeyValues(BiConsumer<String, String> consumer) {
- Iterator<Object> iter = iterator();
- try {
- flattenKeyValues(iter, consumer);
- } finally {
- kvs.get().clear();
- }
- }
-
- public static void flattenKeyValues(Iterator<Object> iter,
- BiConsumer<String, String> consumer) {
- while (iter.hasNext()) {
- String key = iter.next().toString();
- if (!iter.hasNext()) {
- return; // key without value
- }
- Object value = iter.next();
-
- if (value instanceof Sloggable) {
- addWithPrefix(key, (Sloggable) value, consumer, 0);
- } else if (value.getClass().isArray()) {
- consumer.accept(key, arrayToString(value));
- } else {
- consumer.accept(key, value.toString());
- }
- }
- }
-
- @Override
- public Slogger kv(Object key, Object value) {
- kvs.get().add(key);
- kvs.get().add(value);
- return this;
- }
-
- private static void addWithPrefix(String prefix, Sloggable value,
- BiConsumer<String, String> consumer, int
depth) {
- value.log(new SloggableAccumulator() {
- @Override
- public SloggableAccumulator kv(Object key, Object value) {
- if (value instanceof Sloggable && depth < MAX_DEPTH) {
- addWithPrefix(prefix + "." + key.toString(),
- (Sloggable) value, consumer, depth + 1);
- } else if (value.getClass().isArray()) {
- consumer.accept(prefix + "." + key.toString(),
arrayToString(value));
- } else {
- consumer.accept(prefix + "." + key.toString(),
value.toString());
- }
- return this;
- }
- });
- }
-
- private static String arrayToString(Object o) {
- if (o instanceof long[]) {
- return Arrays.toString((long[]) o);
- } else if (o instanceof int[]) {
- return Arrays.toString((int[]) o);
- } else if (o instanceof short[]) {
- return Arrays.toString((short[]) o);
- } else if (o instanceof char[]) {
- return Arrays.toString((char[]) o);
- } else if (o instanceof byte[]) {
- return Arrays.toString((byte[]) o);
- } else if (o instanceof boolean[]) {
- return Arrays.toString((boolean[]) o);
- } else if (o instanceof float[]) {
- return Arrays.toString((float[]) o);
- } else if (o instanceof double[]) {
- return Arrays.toString((double[]) o);
- } else if (o instanceof Object[]) {
- return Arrays.toString((Object[]) o);
- } else {
- return o.toString();
- }
- }
-
- private final ThreadLocal<CtxIterator> iterator = new
ThreadLocal<CtxIterator>() {
- @Override
- protected CtxIterator initialValue() {
- return new CtxIterator();
- }
- };
- class CtxIterator implements Iterator<Object> {
- int index = 0;
-
- private void reset() {
- index = 0;
- }
-
- @Override
- public boolean hasNext() {
- return index < (parentCtx.size() + kvs.get().size());
- }
-
- @Override
- public Object next() {
- int i = index++;
- if (i < parentCtx.size()) {
- return parentCtx.get(i);
- } else {
- i -= parentCtx.size();
- return kvs.get().get(i);
- }
- }
- }
-}
diff --git
a/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/ConsoleSlogger.java
b/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/ConsoleSlogger.java
deleted file mode 100644
index 74e53a4b8e..0000000000
---
a/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/ConsoleSlogger.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bookkeeper.slogger;
-
-import java.time.ZoneOffset;
-import java.time.ZonedDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-/**
- * Simple slogger implementation which writes json to console.
- */
-public class ConsoleSlogger extends AbstractSlogger {
- private static final int MAX_STACKTRACE_ELEMENTS = 20;
- private static final int MAX_CAUSES = 10;
- private final Class<?> clazz;
-
- ConsoleSlogger() {
- this(ConsoleSlogger.class);
- }
-
- ConsoleSlogger(Class<?> clazz) {
- this(clazz, Collections.emptyList());
- }
-
- ConsoleSlogger(Class<?> clazz, Iterable<Object> parent) {
- super(parent);
- this.clazz = clazz;
- }
-
- @Override
- protected Slogger newSlogger(Optional<Class<?>> clazz, Iterable<Object>
parent) {
- return new ConsoleSlogger(clazz.orElse(ConsoleSlogger.class), parent);
- }
-
- @Override
- protected void doLog(Level level, Enum<?> event, String message,
- Throwable throwable, List<Object> keyValues) {
- String nowAsISO =
ZonedDateTime.now(ZoneOffset.UTC).format(DateTimeFormatter.ISO_INSTANT);
-
- StringBuilder builder = new StringBuilder();
- builder.append("{");
- keyValue(builder, "date", nowAsISO);
- builder.append(",");
- keyValue(builder, "level", level.toString());
- if (event != null) {
- builder.append(",");
- keyValue(builder, "event", event.toString());
- }
- if (message != null) {
- builder.append(",");
- keyValue(builder, "message", message);
- }
-
- for (int i = 0; i < keyValues.size(); i += 2) {
- builder.append(",");
- keyValue(builder, keyValues.get(i).toString(), keyValues.get(i +
1).toString());
- }
- if (throwable != null) {
- builder.append(",");
- Throwable cause = throwable;
- StringBuilder stacktrace = new StringBuilder();
- int causes = 0;
- while (cause != null) {
- stacktrace.append("[").append(cause.getMessage()).append("] at
");
- int i = 0;
- for (StackTraceElement element : cause.getStackTrace()) {
- if (i++ > MAX_STACKTRACE_ELEMENTS) {
- stacktrace.append("<|[frames omitted]");
- }
- stacktrace.append("<|").append(element.toString());
- }
- cause = cause.getCause();
- if (cause != null) {
- if (causes++ > MAX_CAUSES) {
- stacktrace.append(" [max causes exceeded] ");
- break;
- } else {
- stacktrace.append(" caused by ");
- }
- }
- }
- keyValue(builder, "exception", stacktrace.toString());
- }
- builder.append("}");
-
- System.out.println(builder);
- }
-
- private static void keyValue(StringBuilder sb, String key, String value) {
- quotedAppend(sb, key);
- sb.append(":");
- quotedAppend(sb, value);
- }
-
- private static void quotedAppend(StringBuilder sb, String str) {
- sb.append('"');
- for (int i = 0; i < str.length(); i++) {
- char c = str.charAt(i);
- if (c == '\\') {
- sb.append("\\\\");
- } else if (c == '"') {
- sb.append("\\\"");
- } else if (c < ' ') {
- sb.append(String.format("\\u%04X", (int) c));
- } else {
- sb.append(c);
- }
- }
- sb.append('"');
- }
-}
diff --git
a/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/NullSlogger.java
b/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/NullSlogger.java
deleted file mode 100644
index 2c5302f80a..0000000000
---
a/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/NullSlogger.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bookkeeper.slogger;
-
-class NullSlogger implements Slogger {
- @Override
- public Slogger kv(Object key, Object value) {
- return this;
- }
-
- @Override
- public Slogger ctx() {
- return this;
- }
-
- @Override
- public Slogger ctx(Class<?> clazz) {
- return this;
- }
-
- @Override
- public void info(String message) {}
- @Override
- public void info(String message, Throwable cause) {}
- @Override
- public void info(Enum<?> event) {}
- @Override
- public void info(Enum<?> event, Throwable cause) {}
-
- @Override
- public void warn(String message) {}
- @Override
- public void warn(String message, Throwable cause) {}
- @Override
- public void warn(Enum<?> event) {}
- @Override
- public void warn(Enum<?> event, Throwable cause) {}
-
- @Override
- public void error(String message) {}
- @Override
- public void error(String message, Throwable cause) {}
- @Override
- public void error(Enum<?> event) {}
- @Override
- public void error(Enum<?> event, Throwable cause) {}
-}
diff --git
a/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/Sloggable.java
b/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/Sloggable.java
deleted file mode 100644
index 165dff5d68..0000000000
---
a/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/Sloggable.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bookkeeper.slogger;
-
-/**
- * Interface to be implemented by classes that want more control
- * over how they are added to a structured log.
- */
-public interface Sloggable {
- SloggableAccumulator log(SloggableAccumulator accumulator);
-}
diff --git
a/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/SloggableAccumulator.java
b/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/SloggableAccumulator.java
deleted file mode 100644
index 10f484b0b0..0000000000
---
a/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/SloggableAccumulator.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bookkeeper.slogger;
-
-/**
- * Interface passed to Sloggable instances, with which they
- * can add their own key/value pairs to the logged event.
- */
-public interface SloggableAccumulator {
- SloggableAccumulator kv(Object key, Object value);
-}
diff --git
a/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/Slogger.java
b/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/Slogger.java
deleted file mode 100644
index f91b2b8f44..0000000000
---
a/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/Slogger.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bookkeeper.slogger;
-
-/**
- * Event logging interface will support for key value pairs and reusable
context.
- */
-public interface Slogger {
- Slogger kv(Object key, Object value);
-
- Slogger ctx();
- Slogger ctx(Class<?> clazz); // <- should this be class or Logger? Logger
requires some generics
-
- void info(String message);
- void info(String message, Throwable cause);
- void info(Enum<?> event);
- void info(Enum<?> event, Throwable cause);
-
- void warn(String message);
- void warn(String message, Throwable cause);
- void warn(Enum<?> event);
- void warn(Enum<?> event, Throwable cause);
-
- void error(String message);
- void error(String message, Throwable cause);
- void error(Enum<?> event);
- void error(Enum<?> event, Throwable cause);
-
- Slogger NULL = new NullSlogger();
- Slogger CONSOLE = new ConsoleSlogger();
-}
diff --git
a/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/package-info.java
b/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/package-info.java
deleted file mode 100644
index f132eafa8d..0000000000
---
a/bookkeeper-slogger/api/src/main/java/org/apache/bookkeeper/slogger/package-info.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/**
- * Structured logging.
- */
-package org.apache.bookkeeper.slogger;
diff --git
a/bookkeeper-slogger/api/src/test/java/org/apache/bookkeeper/slogger/ConcurrencyTest.java
b/bookkeeper-slogger/api/src/test/java/org/apache/bookkeeper/slogger/ConcurrencyTest.java
deleted file mode 100644
index 07c28c37bf..0000000000
---
a/bookkeeper-slogger/api/src/test/java/org/apache/bookkeeper/slogger/ConcurrencyTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bookkeeper.slogger;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import org.junit.Test;
-
-/**
- * Test concurrent access to slogger.
- */
-public class ConcurrencyTest {
- enum Events {
- FOOBAR
- }
-
- @Test
- public void testConcurrentFlattening() throws Exception {
- final int numThreads = 100;
- final int numIterations = 10000;
-
- Slogger slog = new AbstractSlogger(Collections.emptyList()) {
- @Override
- public Slogger newSlogger(Optional<Class<?>> clazz,
Iterable<Object> parent) {
- return this;
- }
- @Override
- public void doLog(Level level, Enum<?> event, String message,
- Throwable throwable, List<Object> keyValues)
{
- for (int i = 0; i < keyValues.size(); i += 2) {
- if (!keyValues.get(i).equals(keyValues.get(i + 1))) {
-
- throw new RuntimeException("Concurrency error");
- }
- }
- }
- };
-
- ExecutorService executor = Executors.newFixedThreadPool(numThreads);
- List<Future<?>> futures = new ArrayList<>();
- for (int i = 0; i < numThreads; i++) {
- futures.add(executor.submit(() -> {
- for (int j = 0; j < numIterations; j++) {
- String value = "kv" +
Thread.currentThread().getId() + "-" + j;
-
- slog.kv(value, value).info(Events.FOOBAR);
- }
- }));
- }
-
- for (Future<?> f : futures) {
- f.get(60, TimeUnit.SECONDS);
- }
- }
-}
diff --git
a/bookkeeper-slogger/api/src/test/java/org/apache/bookkeeper/slogger/ConsoleSloggerTest.java
b/bookkeeper-slogger/api/src/test/java/org/apache/bookkeeper/slogger/ConsoleSloggerTest.java
deleted file mode 100644
index 0ca3612346..0000000000
---
a/bookkeeper-slogger/api/src/test/java/org/apache/bookkeeper/slogger/ConsoleSloggerTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bookkeeper.slogger;
-
-import org.junit.Test;
-
-/**
- * Test console slogger.
- * Doesn't actually assert anything, but can be used to eyeball
- */
-public class ConsoleSloggerTest {
- enum Events {
- FOOBAR,
- BARFOO
- };
-
- @Test
- public void testBasic() throws Exception {
- ConsoleSlogger root = new ConsoleSlogger();
- root.kv("fo\"o", "ba\r \\").info(Events.FOOBAR);
- }
-}
-
diff --git
a/bookkeeper-slogger/api/src/test/java/org/apache/bookkeeper/slogger/MockSlogger.java
b/bookkeeper-slogger/api/src/test/java/org/apache/bookkeeper/slogger/MockSlogger.java
deleted file mode 100644
index f71465f88e..0000000000
---
a/bookkeeper-slogger/api/src/test/java/org/apache/bookkeeper/slogger/MockSlogger.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bookkeeper.slogger;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-/**
- * Mock Slogger.
- */
-public class MockSlogger extends AbstractSlogger {
- List<MockEvent> events = new ArrayList<>();
-
- public MockSlogger() {
- super(new ArrayList<>());
- }
-
- private MockSlogger(Iterable<Object> parentCtx) {
- super(parentCtx);
- }
-
- @Override
- protected Slogger newSlogger(Optional<Class<?>> clazz, Iterable<Object>
parentCtx) {
- return new MockSlogger(parentCtx);
- }
-
- @Override
- protected void doLog(Level level, Enum<?> event, String message, Throwable
throwable,
- List<Object> keyValues) {
- Map<String, Object> tmpKvs = new HashMap<>();
- for (int i = 0; i < keyValues.size(); i += 2) {
- tmpKvs.put(keyValues.get(i).toString(), keyValues.get(i + 1));
- }
- events.add(new MockEvent(level, event, message, tmpKvs, throwable));
- }
-
- static class MockEvent {
- private final Level level;
- private final Enum<?> event;
- private final String message;
- private final Map<String, Object> kvs;
- private final Throwable throwable;
-
- MockEvent(Level level, Enum<?> event, String message,
- Map<String, Object> kvs, Throwable throwable) {
- this.level = level;
- this.event = event;
- this.message = message;
- this.kvs = kvs;
- this.throwable = throwable;
- }
-
- Level getLevel() {
- return level;
- }
- Enum<?> getEvent() {
- return event;
- }
- String getMessage() {
- return message;
- }
- Map<String, Object> getKeyValues() {
- return kvs;
- }
- Throwable getThrowable() {
- return throwable;
- }
- }
-}
diff --git
a/bookkeeper-slogger/api/src/test/java/org/apache/bookkeeper/slogger/SloggerTest.java
b/bookkeeper-slogger/api/src/test/java/org/apache/bookkeeper/slogger/SloggerTest.java
deleted file mode 100644
index 32bf663d7e..0000000000
---
a/bookkeeper-slogger/api/src/test/java/org/apache/bookkeeper/slogger/SloggerTest.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bookkeeper.slogger;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.allOf;
-import static org.hamcrest.Matchers.hasEntry;
-import static org.hamcrest.Matchers.hasSize;
-import static org.hamcrest.Matchers.is;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import org.junit.Test;
-
-/**
- * Test Slogger.
- */
-public class SloggerTest {
- enum Events {
- FOOBAR,
- BARFOO
- };
-
- @Test
- public void testBasic() throws Exception {
- MockSlogger root = new MockSlogger();
- root.kv("foo", 2324).kv("bar", 2342).info(Events.FOOBAR);
- assertThat(root.events, hasSize(1));
- assertThat(root.events.get(0).getLevel(), is(MockSlogger.Level.INFO));
- assertThat(root.events.get(0).getEvent(), is(Events.FOOBAR));
- assertThat(root.events.get(0).getKeyValues(),
- allOf(hasEntry("foo", "2324"),
- hasEntry("bar", "2342")));
- }
-
- @Test
- public void testSloggable() throws Exception {
- MockSlogger root = new MockSlogger();
- root.kv("fancy", new FancyClass(0, 2)).info(Events.FOOBAR);
- assertThat(root.events, hasSize(1));
- assertThat(root.events.get(0).getLevel(), is(MockSlogger.Level.INFO));
- assertThat(root.events.get(0).getEvent(), is(Events.FOOBAR));
- assertThat(root.events.get(0).getKeyValues(),
- allOf(hasEntry("fancy.foo", "0"),
- hasEntry("fancy.bar", "2"),
- hasEntry("fancy.baz.baz", "123")));
- }
-
- @Test
- public void testList() throws Exception {
- MockSlogger root = new MockSlogger();
- List<Integer> list = new ArrayList<>();
- list.add(1);
- list.add(2);
- root.kv("list", list).info(Events.FOOBAR);
-
- assertThat(root.events, hasSize(1));
- assertThat(root.events.get(0).getLevel(), is(MockSlogger.Level.INFO));
- assertThat(root.events.get(0).getEvent(), is(Events.FOOBAR));
- assertThat(root.events.get(0).getKeyValues(), hasEntry("list", "[1,
2]"));
- }
-
- @Test
- public void testMap() throws Exception {
- MockSlogger root = new MockSlogger();
- HashMap<Integer, Integer> map = new LinkedHashMap<>();
- map.put(1, 3);
- map.put(2, 4);
- root.kv("map", map).info(Events.FOOBAR);
-
- assertThat(root.events, hasSize(1));
- assertThat(root.events.get(0).getLevel(), is(MockSlogger.Level.INFO));
- assertThat(root.events.get(0).getEvent(), is(Events.FOOBAR));
- assertThat(root.events.get(0).getKeyValues(), hasEntry("map", "{1=3,
2=4}"));
- }
-
- @Test
- public void testArray() throws Exception {
- MockSlogger root = new MockSlogger();
- String[] array = {"foo", "bar"};
- root.kv("array", array).info(Events.FOOBAR);
-
- assertThat(root.events, hasSize(1));
- assertThat(root.events.get(0).getLevel(), is(MockSlogger.Level.INFO));
- assertThat(root.events.get(0).getEvent(), is(Events.FOOBAR));
- assertThat(root.events.get(0).getKeyValues(), hasEntry("array", "[foo,
bar]"));
- }
-
- @Test
- public void testNestingLimit() throws Exception {
- }
-
- @Test
- public void testCtx() throws Exception {
- MockSlogger root = new MockSlogger();
- MockSlogger withCtx = (MockSlogger) root.kv("ctx1", 1234).kv("ctx2",
4321).ctx();
-
- withCtx.kv("someMore", 2345).info(Events.FOOBAR);
-
- assertThat(withCtx.events, hasSize(1));
- assertThat(withCtx.events.get(0).getLevel(),
is(MockSlogger.Level.INFO));
- assertThat(withCtx.events.get(0).getEvent(), is(Events.FOOBAR));
- System.out.println("kvs " + withCtx.events.get(0).getKeyValues());
- assertThat(withCtx.events.get(0).getKeyValues(),
- allOf(hasEntry("ctx1", "1234"),
- hasEntry("ctx2", "4321"),
- hasEntry("someMore", "2345")));
- }
-
- @Test
- public void textCtxImmutableAfterCreation() throws Exception {
- }
-
- static class FancyClass implements Sloggable {
- int foo;
- int bar;
- OtherFancyClass baz;
-
- FancyClass(int foo, int bar) {
- this.foo = foo;
- this.bar = bar;
- this.baz = new OtherFancyClass(123);
- }
-
- @Override
- public SloggableAccumulator log(SloggableAccumulator slogger) {
- return slogger.kv("foo", foo)
- .kv("bar", bar)
- .kv("baz", baz);
- }
- }
-
- static class OtherFancyClass implements Sloggable {
- int baz;
-
- OtherFancyClass(int baz) {
- this.baz = baz;
- }
-
- @Override
- public SloggableAccumulator log(SloggableAccumulator slogger) {
- return slogger.kv("baz", baz);
- }
- }
-}
diff --git a/bookkeeper-slogger/pom.xml b/bookkeeper-slogger/pom.xml
deleted file mode 100644
index 6bd3d91f59..0000000000
--- a/bookkeeper-slogger/pom.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache.bookkeeper</groupId>
- <artifactId>bookkeeper</artifactId>
- <version>4.18.0-SNAPSHOT</version>
- <relativePath>..</relativePath>
- </parent>
- <packaging>pom</packaging>
- <artifactId>bookkeeper-slogger-parent</artifactId>
- <name>Apache BookKeeper :: Structured Logger :: Parent</name>
-
- <modules>
- <module>api</module>
- <module>slf4j</module>
- </modules>
-
- <build>
- <plugins>
- <plugin>
- <groupId>com.github.spotbugs</groupId>
- <artifactId>spotbugs-maven-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/bookkeeper-slogger/slf4j/pom.xml b/bookkeeper-slogger/slf4j/pom.xml
deleted file mode 100644
index e45b5848bf..0000000000
--- a/bookkeeper-slogger/slf4j/pom.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <artifactId>bookkeeper-slogger-parent</artifactId>
- <groupId>org.apache.bookkeeper</groupId>
- <version>4.18.0-SNAPSHOT</version>
- <relativePath>..</relativePath>
- </parent>
- <groupId>org.apache.bookkeeper</groupId>
- <artifactId>bookkeeper-slogger-slf4j</artifactId>
- <name>Apache BookKeeper :: Structured Logger :: SLF4J Implementation</name>
- <dependencies>
- <dependency>
- <groupId>org.apache.bookkeeper</groupId>
- <artifactId>bookkeeper-slogger-api</artifactId>
- <version>${project.parent.version}</version>
- </dependency>
- </dependencies>
-</project>
diff --git
a/bookkeeper-slogger/slf4j/src/main/java/org/apache/bookkeeper/slogger/slf4j/Slf4jSlogger.java
b/bookkeeper-slogger/slf4j/src/main/java/org/apache/bookkeeper/slogger/slf4j/Slf4jSlogger.java
deleted file mode 100644
index 81400227ab..0000000000
---
a/bookkeeper-slogger/slf4j/src/main/java/org/apache/bookkeeper/slogger/slf4j/Slf4jSlogger.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bookkeeper.slogger.slf4j;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import org.apache.bookkeeper.slogger.AbstractSlogger;
-import org.apache.bookkeeper.slogger.Slogger;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.slf4j.MDC;
-
-/**
- * Slf4j implementation of slogger.
- */
-public class Slf4jSlogger extends AbstractSlogger {
- private ThreadLocal<List<String>> mdcKeysTls = new
ThreadLocal<List<String>>() {
- @Override
- protected List<String> initialValue() {
- return new ArrayList<>();
- }
- };
-
- private final Logger log;
-
- public Slf4jSlogger(Class<?> clazz) {
- this(clazz, Collections.emptyList());
- }
-
- Slf4jSlogger() {
- this(Slf4jSlogger.class);
- }
-
- Slf4jSlogger(Class<?> clazz, Iterable<Object> parent) {
- super(parent);
- this.log = LoggerFactory.getLogger(clazz);
- }
-
- @Override
- protected Slogger newSlogger(Optional<Class<?>> clazz, Iterable<Object>
parent) {
- return new Slf4jSlogger(clazz.orElse(Slf4jSlogger.class), parent);
- }
-
- @Override
- protected void doLog(Level level, Enum<?> event, String message,
- Throwable throwable, List<Object> keyValues) {
- List<String> mdcKeys = mdcKeysTls.get();
- mdcKeys.clear();
- try {
- if (event != null) {
- MDC.put("event", event.toString());
- mdcKeys.add("event");
- }
-
- for (int i = 0; i < keyValues.size(); i += 2) {
- MDC.put(keyValues.get(i).toString(), keyValues.get(i +
1).toString());
- mdcKeys.add(keyValues.get(i).toString());
- }
-
- String msg = message == null ? event.toString() : message;
- switch (level) {
- case INFO:
- log.info(msg);
- break;
- case WARN:
- if (throwable != null) {
- log.warn(msg, throwable);
- } else {
- log.warn(msg);
- }
- break;
- default:
- case ERROR:
- if (throwable != null) {
- log.error(msg, throwable);
- } else {
- log.error(msg);
- }
- break;
- }
- } finally {
- for (String key : mdcKeys) {
- MDC.remove(key);
- }
- mdcKeys.clear();
- }
- }
-}
diff --git
a/bookkeeper-slogger/slf4j/src/main/java/org/apache/bookkeeper/slogger/slf4j/package-info.java
b/bookkeeper-slogger/slf4j/src/main/java/org/apache/bookkeeper/slogger/slf4j/package-info.java
deleted file mode 100644
index 69ff1ed3eb..0000000000
---
a/bookkeeper-slogger/slf4j/src/main/java/org/apache/bookkeeper/slogger/slf4j/package-info.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/**
- * Structured logging (slf4j implementation).
- */
-package org.apache.bookkeeper.slogger.slf4j;
diff --git
a/bookkeeper-slogger/slf4j/src/test/java/org/apache/bookkeeper/slogger/slf4j/Slf4jTest.java
b/bookkeeper-slogger/slf4j/src/test/java/org/apache/bookkeeper/slogger/slf4j/Slf4jTest.java
deleted file mode 100644
index 848a05cfac..0000000000
---
a/bookkeeper-slogger/slf4j/src/test/java/org/apache/bookkeeper/slogger/slf4j/Slf4jTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bookkeeper.slogger.slf4j;
-
-import org.apache.bookkeeper.slogger.Slogger;
-import org.junit.Test;
-
-/**
- * Test to eyeball slf4j output.
- * Contains no asserts.
- */
-public class Slf4jTest {
- enum Events {
- FOOBAR
- }
- @Test
- public void testBasic() throws Exception {
- Slogger slogger = new Slf4jSlogger(Slf4jTest.class);
- slogger.kv("foo", 123).kv("bar", 432).info(Events.FOOBAR);
- }
-}
diff --git a/pom.xml b/pom.xml
index 68d5e0ecb4..ca8f11086a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,7 +68,6 @@
<module>bookkeeper-dist</module>
<module>shaded</module>
<module>microbenchmarks</module>
- <module>bookkeeper-slogger</module>
<module>tests</module>
<module>native-io</module>
<module>testtools</module>