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 ca60555ca..597eed456 100755 --- a/slf4j-api/src/main/java/org/slf4j/spi/DefaultLoggingEventBuilder.java +++ b/slf4j-api/src/main/java/org/slf4j/spi/DefaultLoggingEventBuilder.java @@ -11,182 +11,180 @@ public class DefaultLoggingEventBuilder implements LoggingEventBuilder { - DefaultLoggingEvent loggingEvent; - Logger logger; - - public DefaultLoggingEventBuilder(Logger logger, Level level) { - this.logger = logger; - loggingEvent = new DefaultLoggingEvent(level, logger); - } - - /** - * Add a marker to the current logging event being built. - * - * It is possible to add multiple markers to the same logging event. - * - * @param marker the marker to add - */ - @Override - public LoggingEventBuilder addMarker(Marker marker) { - loggingEvent.addMarker(marker); - return this; - } - - @Override - public LoggingEventBuilder setCause(Throwable t) { - loggingEvent.setThrowable(t); - return this; - } - - @Override - public LoggingEventBuilder addArgument(Object p) { - loggingEvent.addArgument(p); - return this; - } - - @Override - public LoggingEventBuilder addArgument(Supplier objectSupplier) { - loggingEvent.addArgument(objectSupplier.get()); - return this; - } - - @Override - public void log(String message) { - loggingEvent.setMessage(message); - innerLog(loggingEvent); - } - - - @Override - public void log(String message, Object arg) { - loggingEvent.setMessage(message); - loggingEvent.addArgument(arg); - innerLog(loggingEvent); - } - - @Override - public void log(String message, Object arg0, Object arg1) { - loggingEvent.setMessage(message); - loggingEvent.addArgument(arg0); - loggingEvent.addArgument(arg1); - innerLog(loggingEvent); - } - - @Override - public void log(String message, Object... args) { - loggingEvent.setMessage(message); - loggingEvent.addArguments(args); - - innerLog(loggingEvent); - } - - private void innerLog(LoggingEvent logggingEvent) { - if (logger instanceof LoggingEventAware) { - ((LoggingEventAware) logger).log(logggingEvent); - } else { - logViaPublicSLF4JLoggerAPI(logggingEvent); - } - } - - private void logViaPublicSLF4JLoggerAPI(LoggingEvent logggingEvent) { - Object[] argArray = logggingEvent.getArgumentArray(); - int argLen = argArray == null ? 0 : argArray.length; - - Throwable t = logggingEvent.getThrowable(); - int tLen = t == null ? 0 : 1; - - String msg = logggingEvent.getMessage(); - - Object[] combinedArguments = new Object[argLen + tLen]; - - if (argArray != null) { - System.arraycopy(argArray, 0, combinedArguments, 0, argLen); - } - if (t != null) { - combinedArguments[argLen] = t; - } - - msg = mergeMarkersAndKeyValuePairs(logggingEvent, msg); - - switch (logggingEvent.getLevel()) { - case TRACE: - logger.trace(msg, combinedArguments); - break; - case DEBUG: - logger.debug(msg, combinedArguments); - break; - case INFO: - logger.info(msg, combinedArguments); - break; - case WARN: - logger.warn(msg, combinedArguments); - break; - case ERROR: - logger.error(msg, combinedArguments); - break; - } - - } - - /** - * Prepend markers and key-value pairs to the message. - * - * @param logggingEvent - * @param msg - * @return - */ - private String mergeMarkersAndKeyValuePairs(LoggingEvent logggingEvent, String msg) { - - StringBuilder sb = null; - - if(loggingEvent.getMarkers() != null) { - sb = new StringBuilder(); - for(Marker marker: logggingEvent.getMarkers()) { - sb.append(marker); - sb.append(' '); - } - } - - if(logggingEvent.getKeyValuePairs() != null) { - if(sb == null) { - sb = new StringBuilder(); - } - for(KeyValuePair kvp: logggingEvent.getKeyValuePairs()) { - sb.append(kvp.key); - sb.append('='); - sb.append(kvp.value); - sb.append(' '); - } - } - - if(sb != null) { - sb.append(msg); - return sb.toString(); - } else { - return msg; - } - } - - - @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); - return this; - } - - @Override - public LoggingEventBuilder addKeyValue(String key, Supplier value) { - loggingEvent.addKeyValue(key, value.get()); - return this; - } + DefaultLoggingEvent loggingEvent; + Logger logger; + + public DefaultLoggingEventBuilder(Logger logger, Level level) { + this.logger = logger; + loggingEvent = new DefaultLoggingEvent(level, logger); + } + + /** + * Add a marker to the current logging event being built. + * + * It is possible to add multiple markers to the same logging event. + * + * @param marker the marker to add + */ + @Override + public LoggingEventBuilder addMarker(Marker marker) { + loggingEvent.addMarker(marker); + return this; + } + + @Override + public LoggingEventBuilder setCause(Throwable t) { + loggingEvent.setThrowable(t); + return this; + } + + @Override + public LoggingEventBuilder addArgument(Object p) { + loggingEvent.addArgument(p); + return this; + } + + @Override + public LoggingEventBuilder addArgument(Supplier objectSupplier) { + loggingEvent.addArgument(objectSupplier.get()); + return this; + } + + @Override + public void log(String message) { + loggingEvent.setMessage(message); + innerLog(loggingEvent); + } + + @Override + public void log(String message, Object arg) { + loggingEvent.setMessage(message); + loggingEvent.addArgument(arg); + innerLog(loggingEvent); + } + + @Override + public void log(String message, Object arg0, Object arg1) { + loggingEvent.setMessage(message); + loggingEvent.addArgument(arg0); + loggingEvent.addArgument(arg1); + innerLog(loggingEvent); + } + + @Override + public void log(String message, Object... args) { + loggingEvent.setMessage(message); + loggingEvent.addArguments(args); + + innerLog(loggingEvent); + } + + private void innerLog(LoggingEvent logggingEvent) { + if (logger instanceof LoggingEventAware) { + ((LoggingEventAware) logger).log(logggingEvent); + } else { + logViaPublicSLF4JLoggerAPI(logggingEvent); + } + } + + private void logViaPublicSLF4JLoggerAPI(LoggingEvent logggingEvent) { + Object[] argArray = logggingEvent.getArgumentArray(); + int argLen = argArray == null ? 0 : argArray.length; + + Throwable t = logggingEvent.getThrowable(); + int tLen = t == null ? 0 : 1; + + String msg = logggingEvent.getMessage(); + + Object[] combinedArguments = new Object[argLen + tLen]; + + if (argArray != null) { + System.arraycopy(argArray, 0, combinedArguments, 0, argLen); + } + if (t != null) { + combinedArguments[argLen] = t; + } + + msg = mergeMarkersAndKeyValuePairs(logggingEvent, msg); + + switch (logggingEvent.getLevel()) { + case TRACE: + logger.trace(msg, combinedArguments); + break; + case DEBUG: + logger.debug(msg, combinedArguments); + break; + case INFO: + logger.info(msg, combinedArguments); + break; + case WARN: + logger.warn(msg, combinedArguments); + break; + case ERROR: + logger.error(msg, combinedArguments); + break; + } + + } + + /** + * Prepend markers and key-value pairs to the message. + * + * @param logggingEvent + * @param msg + * @return + */ + private String mergeMarkersAndKeyValuePairs(LoggingEvent logggingEvent, String msg) { + + StringBuilder sb = null; + + if (loggingEvent.getMarkers() != null) { + sb = new StringBuilder(); + for (Marker marker : logggingEvent.getMarkers()) { + sb.append(marker); + sb.append(' '); + } + } + + if (logggingEvent.getKeyValuePairs() != null) { + if (sb == null) { + sb = new StringBuilder(); + } + for (KeyValuePair kvp : logggingEvent.getKeyValuePairs()) { + sb.append(kvp.key); + sb.append('='); + sb.append(kvp.value); + sb.append(' '); + } + } + + if (sb != null) { + sb.append(msg); + return sb.toString(); + } else { + return msg; + } + } + + @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); + return this; + } + + @Override + public LoggingEventBuilder addKeyValue(String key, Supplier value) { + loggingEvent.addKeyValue(key, value.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 73936858f..b44e5102c 100755 --- a/slf4j-api/src/main/java/org/slf4j/spi/LoggingEventBuilder.java +++ b/slf4j-api/src/main/java/org/slf4j/spi/LoggingEventBuilder.java @@ -13,23 +13,26 @@ */ public interface LoggingEventBuilder { + LoggingEventBuilder setCause(Throwable cause); + + LoggingEventBuilder addMarker(Marker marker); + + LoggingEventBuilder addArgument(Object p); + + LoggingEventBuilder addArgument(Supplier objectSupplier); + + LoggingEventBuilder addKeyValue(String key, Object value); + + LoggingEventBuilder addKeyValue(String key, Supplier value); + + void log(String message); + + void log(String message, Object arg); + + void log(String message, Object arg0, Object arg1); + + void log(String message, Object... args); + + void log(Supplier messageSupplier); - LoggingEventBuilder setCause(Throwable cause); - - LoggingEventBuilder addMarker(Marker marker); - LoggingEventBuilder addArgument(Object p); - LoggingEventBuilder addArgument(Supplier objectSupplier); - LoggingEventBuilder addKeyValue(String key, Object value); - LoggingEventBuilder addKeyValue(String key, Supplier value); - - void log(String message); - - void log(String message, Object arg); - void log(String message, Object arg0, Object arg1); - void log(String message, Object... args); - - void log(Supplier messageSupplier); - - - }