Skip to content

Commit

Permalink
move methods from Util back to MessageFormatter
Browse files Browse the repository at this point in the history
  • Loading branch information
ceki committed Aug 10, 2021
1 parent 176e067 commit 7e6e3d1
Show file tree
Hide file tree
Showing 3 changed files with 145 additions and 133 deletions.
184 changes: 98 additions & 86 deletions slf4j-api/src/main/java/org/slf4j/event/EventRecodingLogger.java
Expand Up @@ -4,15 +4,28 @@

import org.slf4j.Logger;
import org.slf4j.Marker;
import org.slf4j.helpers.MessageFormatter;
import org.slf4j.helpers.SubstituteLogger;
import org.slf4j.helpers.Util;

/**
*
* This class is used to record events during the initialization phase of
* the underlying logging framework. It is called by {@link SubstituteLogger}.
*
*
* @author Ceki G&uumllcü
* @author Wessel van Norel
*
*/
public class EventRecodingLogger implements Logger {

String name;
SubstituteLogger logger;
Queue<SubstituteLoggingEvent> eventQueue;

// as an event recording logger we have no choice but to record all events
final static boolean RECORD_ALL_EVENTS = true;

public EventRecodingLogger(SubstituteLogger logger, Queue<SubstituteLoggingEvent> eventQueue) {
this.logger = logger;
this.name = logger.getName();
Expand All @@ -23,77 +36,32 @@ public String getName() {
return name;
}

private void recordEvent(Level level, String msg, Object arg1, Object arg2) {
recordEvent(level, null, msg, arg1, arg2);
}

private void recordEvent(Level level, Marker marker, String msg, Object arg1, Object arg2) {
if (arg2 instanceof Throwable) {
recordEvent(level, marker, msg, new Object[] { arg1 }, (Throwable) arg2);
} else {
recordEvent(level, marker, msg, new Object[] { arg1, arg2 }, null);
}
}

private void recordEvent(Level level, String msg, Object[] args, Throwable throwable) {
recordEvent(level, null, msg, args, throwable);
}

private void recordEvent(Level level, Marker marker, String msg, Object[] args, Throwable throwable) {
// System.out.println("recording logger:"+name+", msg:"+msg);
SubstituteLoggingEvent loggingEvent = new SubstituteLoggingEvent();
loggingEvent.setTimeStamp(System.currentTimeMillis());
loggingEvent.setLevel(level);
loggingEvent.setLogger(logger);
loggingEvent.setLoggerName(name);
loggingEvent.addMarker(marker);
loggingEvent.setMessage(msg);
loggingEvent.setThreadName(Thread.currentThread().getName());

// 1 and 2 args are covered by other methods
if (throwable == null && args != null && args.length > 2) {
Throwable throwableCandidate = Util.getThrowableCandidate(args);
if(throwableCandidate != null) {
loggingEvent.setArgumentArray(Util.trimmedCopy(args));
loggingEvent.setThrowable(throwableCandidate);
} else {
loggingEvent.setArgumentArray(args);
loggingEvent.setThrowable(null);
}
} else {
loggingEvent.setArgumentArray(args);
loggingEvent.setThrowable(throwable);
}

eventQueue.add(loggingEvent);
}

public boolean isTraceEnabled() {
return true;
return RECORD_ALL_EVENTS;
}

public void trace(String msg) {
recordEvent(Level.TRACE, msg, null, null);
recordEventwithoutMarkerArgArray(Level.TRACE, msg, null, null);
}

public void trace(String format, Object arg) {
recordEvent(Level.TRACE, format, new Object[] { arg }, null);
recordEventwithoutMarkerArgArray(Level.TRACE, format, new Object[] { arg }, null);
}

public void trace(String format, Object arg1, Object arg2) {
recordEvent(Level.TRACE, format, arg1, arg2);
recordEventWithoutMarker2Args(Level.TRACE, format, arg1, arg2);
}

public void trace(String format, Object... arguments) {
recordEvent(Level.TRACE, format, arguments, null);
recordEventwithoutMarkerArgArray(Level.TRACE, format, arguments, null);
}

public void trace(String msg, Throwable t) {
recordEvent(Level.TRACE, msg, null, t);
recordEventwithoutMarkerArgArray(Level.TRACE, msg, null, t);
}

public boolean isTraceEnabled(Marker marker) {
return true;
return RECORD_ALL_EVENTS;
}

public void trace(Marker marker, String msg) {
Expand All @@ -106,7 +74,7 @@ public void trace(Marker marker, String format, Object arg) {
}

public void trace(Marker marker, String format, Object arg1, Object arg2) {
recordEvent(Level.TRACE, marker, format, arg1, arg2);
recordEvent2Args(Level.TRACE, marker, format, arg1, arg2);
}

public void trace(Marker marker, String format, Object... argArray) {
Expand All @@ -119,32 +87,32 @@ public void trace(Marker marker, String msg, Throwable t) {
}

public boolean isDebugEnabled() {
return true;
return RECORD_ALL_EVENTS;
}

public void debug(String msg) {
recordEvent(Level.DEBUG, msg, null, null);
recordEventwithoutMarkerArgArray(Level.DEBUG, msg, null, null);
}

public void debug(String format, Object arg) {
recordEvent(Level.DEBUG, format, new Object[] { arg }, null);
recordEventwithoutMarkerArgArray(Level.DEBUG, format, new Object[] { arg }, null);

}

public void debug(String format, Object arg1, Object arg2) {
recordEvent(Level.DEBUG, format, arg1, arg2);
recordEventWithoutMarker2Args(Level.DEBUG, format, arg1, arg2);
}

public void debug(String format, Object... arguments) {
recordEvent(Level.DEBUG, format, arguments, null);
recordEventwithoutMarkerArgArray(Level.DEBUG, format, arguments, null);
}

public void debug(String msg, Throwable t) {
recordEvent(Level.DEBUG, msg, null, t);
recordEventwithoutMarkerArgArray(Level.DEBUG, msg, null, t);
}

public boolean isDebugEnabled(Marker marker) {
return true;
return RECORD_ALL_EVENTS;
}

public void debug(Marker marker, String msg) {
Expand All @@ -156,7 +124,7 @@ public void debug(Marker marker, String format, Object arg) {
}

public void debug(Marker marker, String format, Object arg1, Object arg2) {
recordEvent(Level.DEBUG, marker, format, arg1, arg2);
recordEvent2Args(Level.DEBUG, marker, format, arg1, arg2);
}

public void debug(Marker marker, String format, Object... arguments) {
Expand All @@ -168,31 +136,31 @@ public void debug(Marker marker, String msg, Throwable t) {
}

public boolean isInfoEnabled() {
return true;
return RECORD_ALL_EVENTS;
}

public void info(String msg) {
recordEvent(Level.INFO, msg, null, null);
recordEventwithoutMarkerArgArray(Level.INFO, msg, null, null);
}

public void info(String format, Object arg) {
recordEvent(Level.INFO, format, new Object[] { arg }, null);
recordEventwithoutMarkerArgArray(Level.INFO, format, new Object[] { arg }, null);
}

public void info(String format, Object arg1, Object arg2) {
recordEvent(Level.INFO, format, arg1, arg2);
recordEventWithoutMarker2Args(Level.INFO, format, arg1, arg2);
}

public void info(String format, Object... arguments) {
recordEvent(Level.INFO, format, arguments, null);
recordEventwithoutMarkerArgArray(Level.INFO, format, arguments, null);
}

public void info(String msg, Throwable t) {
recordEvent(Level.INFO, msg, null, t);
recordEventwithoutMarkerArgArray(Level.INFO, msg, null, t);
}

public boolean isInfoEnabled(Marker marker) {
return true;
return RECORD_ALL_EVENTS;
}

public void info(Marker marker, String msg) {
Expand All @@ -204,7 +172,7 @@ public void info(Marker marker, String format, Object arg) {
}

public void info(Marker marker, String format, Object arg1, Object arg2) {
recordEvent(Level.INFO, marker, format, arg1, arg2);
recordEvent2Args(Level.INFO, marker, format, arg1, arg2);
}

public void info(Marker marker, String format, Object... arguments) {
Expand All @@ -217,32 +185,32 @@ public void info(Marker marker, String msg, Throwable t) {
}

public boolean isWarnEnabled() {
return true;
return RECORD_ALL_EVENTS;
}

public void warn(String msg) {
recordEvent(Level.WARN, msg, null, null);
recordEventwithoutMarkerArgArray(Level.WARN, msg, null, null);
}

public void warn(String format, Object arg) {
recordEvent(Level.WARN, format, new Object[] { arg }, null);
recordEventwithoutMarkerArgArray(Level.WARN, format, new Object[] { arg }, null);

}

public void warn(String format, Object arg1, Object arg2) {
recordEvent(Level.WARN, format, arg1, arg2);
recordEventWithoutMarker2Args(Level.WARN, format, arg1, arg2);
}

public void warn(String format, Object... arguments) {
recordEvent(Level.WARN, format, arguments, null);
recordEventwithoutMarkerArgArray(Level.WARN, format, arguments, null);
}

public void warn(String msg, Throwable t) {
recordEvent(Level.WARN, msg, null, t);
recordEventwithoutMarkerArgArray(Level.WARN, msg, null, t);
}

public boolean isWarnEnabled(Marker marker) {
return true;
return RECORD_ALL_EVENTS;
}

public void warn(Marker marker, String msg) {
Expand All @@ -254,7 +222,7 @@ public void warn(Marker marker, String format, Object arg) {
}

public void warn(Marker marker, String format, Object arg1, Object arg2) {
recordEvent(Level.WARN, marker, format, arg1, arg2);
recordEvent2Args(Level.WARN, marker, format, arg1, arg2);
}

public void warn(Marker marker, String format, Object... arguments) {
Expand All @@ -266,34 +234,34 @@ public void warn(Marker marker, String msg, Throwable t) {
}

public boolean isErrorEnabled() {
return true;
return RECORD_ALL_EVENTS;
}

public void error(String msg) {
recordEvent(Level.ERROR, msg, null, null);
recordEventwithoutMarkerArgArray(Level.ERROR, msg, null, null);
}

public void error(String format, Object arg) {
recordEvent(Level.ERROR, format, new Object[] { arg }, null);
recordEventwithoutMarkerArgArray(Level.ERROR, format, new Object[] { arg }, null);

}

public void error(String format, Object arg1, Object arg2) {
recordEvent(Level.ERROR, format, arg1, arg2);
recordEventWithoutMarker2Args(Level.ERROR, format, arg1, arg2);

}

public void error(String format, Object... arguments) {
recordEvent(Level.ERROR, format, arguments, null);
recordEventwithoutMarkerArgArray(Level.ERROR, format, arguments, null);

}

public void error(String msg, Throwable t) {
recordEvent(Level.ERROR, msg, null, t);
recordEventwithoutMarkerArgArray(Level.ERROR, msg, null, t);
}

public boolean isErrorEnabled(Marker marker) {
return true;
return RECORD_ALL_EVENTS;
}

public void error(Marker marker, String msg) {
Expand All @@ -307,7 +275,7 @@ public void error(Marker marker, String format, Object arg) {
}

public void error(Marker marker, String format, Object arg1, Object arg2) {
recordEvent(Level.ERROR, marker, format, arg1, arg2);
recordEvent2Args(Level.ERROR, marker, format, arg1, arg2);
}

public void error(Marker marker, String format, Object... arguments) {
Expand All @@ -318,4 +286,48 @@ public void error(Marker marker, String msg, Throwable t) {
recordEvent(Level.ERROR, marker, msg, null, t);
}

private void recordEventWithoutMarker2Args(Level level, String msg, Object arg1, Object arg2) {
recordEvent2Args(level, null, msg, arg1, arg2);
}

private void recordEvent2Args(Level level, Marker marker, String msg, Object arg1, Object arg2) {
if (arg2 instanceof Throwable) {
recordEvent(level, marker, msg, new Object[] { arg1 }, (Throwable) arg2);
} else {
recordEvent(level, marker, msg, new Object[] { arg1, arg2 }, null);
}
}

private void recordEventwithoutMarkerArgArray(Level level, String msg, Object[] args, Throwable throwable) {
recordEvent(level, null, msg, args, throwable);
}

private void recordEvent(Level level, Marker marker, String msg, Object[] args, Throwable throwable) {
// System.out.println("recording logger:"+name+", msg:"+msg);
SubstituteLoggingEvent loggingEvent = new SubstituteLoggingEvent();
loggingEvent.setTimeStamp(System.currentTimeMillis());
loggingEvent.setLevel(level);
loggingEvent.setLogger(logger);
loggingEvent.setLoggerName(name);
loggingEvent.addMarker(marker);
loggingEvent.setMessage(msg);
loggingEvent.setThreadName(Thread.currentThread().getName());

// 1 and 2 args are covered by other methods
if (throwable == null && args != null && args.length > 2) {
Throwable throwableCandidate = MessageFormatter.getThrowableCandidate(args);
if(throwableCandidate != null) {
loggingEvent.setArgumentArray(MessageFormatter.trimmedCopy(args));
loggingEvent.setThrowable(throwableCandidate);
} else {
loggingEvent.setArgumentArray(args);
loggingEvent.setThrowable(null);
}
} else {
loggingEvent.setArgumentArray(args);
loggingEvent.setThrowable(throwable);
}

eventQueue.add(loggingEvent);
}
}

0 comments on commit 7e6e3d1

Please sign in to comment.