From 189cc6ea5e2b0f5e3f9826207c898465c1c7e4df Mon Sep 17 00:00:00 2001 From: Adrian Shum Date: Sun, 19 Dec 2021 13:47:13 +1100 Subject: [PATCH] SLF4J-256: Fluent API improvement - adding message() in event builder, to allow message to be provided before arguments - adding arg() as alias of addArgument() - some typo fixes --- .../slf4j/spi/DefaultLoggingEventBuilder.java | 66 +++++++++++-------- .../org/slf4j/spi/LoggingEventBuilder.java | 14 ++++ .../org/slf4j/spi/NOPLoggingEventBuilder.java | 14 ++++ 3 files changed, 68 insertions(+), 26 deletions(-) diff --git a/slf4j-api/src/main/java/org/slf4j/spi/DefaultLoggingEventBuilder.java b/slf4j-api/src/main/java/org/slf4j/spi/DefaultLoggingEventBuilder.java index a765e4297..7a65a8d0e 100755 --- a/slf4j-api/src/main/java/org/slf4j/spi/DefaultLoggingEventBuilder.java +++ b/slf4j-api/src/main/java/org/slf4j/spi/DefaultLoggingEventBuilder.java @@ -84,22 +84,36 @@ public void log(String message, Object... args) { log(loggingEvent); } - protected void log(LoggingEvent logggingEvent) { + @Override + public void log(Supplier messageSupplier) { + if (messageSupplier == null) { + log((String) null); + } else { + log(messageSupplier.get()); + } + } + + @Override + public void log() { + log(loggingEvent); + } + + protected void log(LoggingEvent loggingEvent) { if (logger instanceof LoggingEventAware) { - ((LoggingEventAware) logger).log(logggingEvent); + ((LoggingEventAware) logger).log(loggingEvent); } else { - logViaPublicSLF4JLoggerAPI(logggingEvent); + logViaPublicSLF4JLoggerAPI(loggingEvent); } } - private void logViaPublicSLF4JLoggerAPI(LoggingEvent logggingEvent) { - Object[] argArray = logggingEvent.getArgumentArray(); + private void logViaPublicSLF4JLoggerAPI(LoggingEvent loggingEvent) { + Object[] argArray = loggingEvent.getArgumentArray(); int argLen = argArray == null ? 0 : argArray.length; - Throwable t = logggingEvent.getThrowable(); + Throwable t = loggingEvent.getThrowable(); int tLen = t == null ? 0 : 1; - String msg = logggingEvent.getMessage(); + String msg = loggingEvent.getMessage(); Object[] combinedArguments = new Object[argLen + tLen]; @@ -110,9 +124,9 @@ private void logViaPublicSLF4JLoggerAPI(LoggingEvent logggingEvent) { combinedArguments[argLen] = t; } - msg = mergeMarkersAndKeyValuePairs(logggingEvent, msg); + msg = mergeMarkersAndKeyValuePairs(loggingEvent, msg); - switch (logggingEvent.getLevel()) { + switch (loggingEvent.getLevel()) { case TRACE: logger.trace(msg, combinedArguments); break; @@ -135,27 +149,27 @@ private void logViaPublicSLF4JLoggerAPI(LoggingEvent logggingEvent) { /** * Prepend markers and key-value pairs to the message. * - * @param logggingEvent + * @param loggingEvent * @param msg * @return */ - private String mergeMarkersAndKeyValuePairs(LoggingEvent logggingEvent, String msg) { + private String mergeMarkersAndKeyValuePairs(LoggingEvent loggingEvent, String msg) { StringBuilder sb = null; - if (loggingEvent.getMarkers() != null) { + if (this.loggingEvent.getMarkers() != null) { sb = new StringBuilder(); - for (Marker marker : logggingEvent.getMarkers()) { + for (Marker marker : loggingEvent.getMarkers()) { sb.append(marker); sb.append(' '); } } - if (logggingEvent.getKeyValuePairs() != null) { + if (loggingEvent.getKeyValuePairs() != null) { if (sb == null) { sb = new StringBuilder(); } - for (KeyValuePair kvp : logggingEvent.getKeyValuePairs()) { + for (KeyValuePair kvp : loggingEvent.getKeyValuePairs()) { sb.append(kvp.key); sb.append('='); sb.append(kvp.value); @@ -171,15 +185,6 @@ private String mergeMarkersAndKeyValuePairs(LoggingEvent logggingEvent, String m } } - @Override - public void log(Supplier messageSupplier) { - if (messageSupplier == null) { - log((String) null); - } else { - log(messageSupplier.get()); - } - } - @Override public LoggingEventBuilder addKeyValue(String key, Object value) { loggingEvent.addKeyValue(key, value); @@ -192,8 +197,17 @@ public LoggingEventBuilder addKeyValue(String key, Supplier value) { return this; } - + @Override + public LoggingEventBuilder message(String message) { + loggingEvent.setMessage(message); + return this; + } + + @Override + public LoggingEventBuilder message(Supplier messageSupplier) { + loggingEvent.setMessage(messageSupplier == null? null : messageSupplier.get()); + return this; + } - } diff --git a/slf4j-api/src/main/java/org/slf4j/spi/LoggingEventBuilder.java b/slf4j-api/src/main/java/org/slf4j/spi/LoggingEventBuilder.java index fc42c1c1b..1dd13ee92 100755 --- a/slf4j-api/src/main/java/org/slf4j/spi/LoggingEventBuilder.java +++ b/slf4j-api/src/main/java/org/slf4j/spi/LoggingEventBuilder.java @@ -45,10 +45,22 @@ public interface LoggingEventBuilder { LoggingEventBuilder addArgument(Supplier objectSupplier); + default LoggingEventBuilder arg(Object argument) { + return addArgument(argument); + } + + default LoggingEventBuilder arg(Supplier argumentSupplier) { + return addArgument(argumentSupplier); + } + LoggingEventBuilder addKeyValue(String key, Object value); LoggingEventBuilder addKeyValue(String key, Supplier value); + LoggingEventBuilder message(String message); + + LoggingEventBuilder message(Supplier messageSupplier); + void log(String message); void log(String message, Object arg); @@ -59,4 +71,6 @@ public interface LoggingEventBuilder { void log(Supplier messageSupplier); + void log(); + } diff --git a/slf4j-api/src/main/java/org/slf4j/spi/NOPLoggingEventBuilder.java b/slf4j-api/src/main/java/org/slf4j/spi/NOPLoggingEventBuilder.java index 487f47ce4..9e0a248cd 100755 --- a/slf4j-api/src/main/java/org/slf4j/spi/NOPLoggingEventBuilder.java +++ b/slf4j-api/src/main/java/org/slf4j/spi/NOPLoggingEventBuilder.java @@ -50,6 +50,16 @@ public LoggingEventBuilder addKeyValue(String key, Supplier value) { return singleton(); } + @Override + public LoggingEventBuilder message(String message) { + return singleton(); + } + + @Override + public LoggingEventBuilder message(Supplier messageSupplier) { + return singleton(); + } + @Override public LoggingEventBuilder setCause(Throwable cause) { return singleton(); @@ -64,6 +74,10 @@ public void log(String message) { public void log(Supplier messageSupplier) { } + @Override + public void log() { + } + @Override public void log(String message, Object arg) { }