Skip to content

Commit

Permalink
SLF4J-256: Fluent API improvement
Browse files Browse the repository at this point in the history
- adding message() in event builder, to allow message to be provided before arguments
- adding arg() as alias of addArgument()
- some typo fixes

Signed-off-by: Adrian Shum <adrianshum@gmail.com>
  • Loading branch information
adrianshum committed Dec 19, 2021
1 parent 7c62cf8 commit ac3f21a
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -84,22 +84,36 @@ public void log(String message, Object... args) {
log(loggingEvent);
}

protected void log(LoggingEvent logggingEvent) {
@Override
public void log(Supplier<String> 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];

Expand All @@ -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;
Expand All @@ -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);
Expand All @@ -171,15 +185,6 @@ private String mergeMarkersAndKeyValuePairs(LoggingEvent logggingEvent, String m
}
}

@Override
public void log(Supplier<String> messageSupplier) {
if (messageSupplier == null) {
log((String) null);
} else {
log(messageSupplier.get());
}
}

@Override
public LoggingEventBuilder addKeyValue(String key, Object value) {
loggingEvent.addKeyValue(key, value);
Expand All @@ -192,8 +197,17 @@ public LoggingEventBuilder addKeyValue(String key, Supplier<Object> value) {
return this;
}


@Override
public LoggingEventBuilder message(String message) {
loggingEvent.setMessage(message);
return this;
}

@Override
public LoggingEventBuilder message(Supplier<String> messageSupplier) {
loggingEvent.setMessage(messageSupplier == null? null : messageSupplier.get());
return this;
}



}
14 changes: 14 additions & 0 deletions slf4j-api/src/main/java/org/slf4j/spi/LoggingEventBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<Object> value);

LoggingEventBuilder message(String message);

LoggingEventBuilder message(Supplier<String> messageSupplier);

void log(String message);

void log(String message, Object arg);
Expand All @@ -59,4 +71,6 @@ public interface LoggingEventBuilder {

void log(Supplier<String> messageSupplier);

void log();

}
14 changes: 14 additions & 0 deletions slf4j-api/src/main/java/org/slf4j/spi/NOPLoggingEventBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,16 @@ public LoggingEventBuilder addKeyValue(String key, Supplier<Object> value) {
return singleton();
}

@Override
public LoggingEventBuilder message(String message) {
return singleton();
}

@Override
public LoggingEventBuilder message(Supplier<String> messageSupplier) {
return singleton();
}

@Override
public LoggingEventBuilder setCause(Throwable cause) {
return singleton();
Expand All @@ -64,6 +74,10 @@ public void log(String message) {
public void log(Supplier<String> messageSupplier) {
}

@Override
public void log() {
}

@Override
public void log(String message, Object arg) {
}
Expand Down

0 comments on commit ac3f21a

Please sign in to comment.