Class DefaultFixtureLogger
- java.lang.Object
-
- de.gebit.integrity.runner.logging.DefaultFixtureLogger
-
- All Implemented Interfaces:
FixtureLogger,AggregatingFixtureLogger
public class DefaultFixtureLogger extends java.lang.Object implements AggregatingFixtureLogger
The default implementation of aFixtureLoggerusually used in Integrity.- Author:
- Rene Schneider - initial API and implementation
-
-
Field Summary
Fields Modifier and Type Field Description protected ConsoleOutputInterceptorconsoleOutputInterceptorThe console interceptor.protected static charESCAPE_CHARThe escape character, which can be used to actually put thePARAM_STRpattern into a log message without it being replaced.protected static java.lang.StringFIXTURE_LOG_CONSOLE_PREFIXThe prefix for fixture log lines that are being printed on the console.static java.lang.StringLOG_TRACE_PROPERTYSet this system property to turn on verbose logging of fixture log output.protected java.util.List<LogLine>loggedLinesAll logged lines are collected here.protected static charPARAM_STARTParameter placeholders are started with this char.protected static charPARAM_STOPParameter placeholders end with this char.protected static java.lang.StringPARAM_STRThis string is the parameter placeholder.protected java.util.List<LogLine>resultLoggedLinesThe unmodifiable collection returned to callers is cached here, in case multiple callers need the same one.protected FixtureLogLevelthresholdLevelOnly log messages that equal this level or are coarser than it will be logged.
-
Constructor Summary
Constructors Constructor Description DefaultFixtureLogger()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidappendParameter(java.lang.StringBuilder aBuffer, java.lang.Object aParam)Appends the given parameter (which can be an array or a single object).protected voidappendSimpleObjectParameter(java.lang.StringBuilder aBuffer, java.lang.Object aParam)Appends the given parameter, which at this point must be a single object.voidclearLines()Clears any lines currently stored in the logger.voiddebug(java.lang.String aMessage, java.lang.Object... someParameters)Log the specified message atFixtureLogLevel.DEBUGlevel.voiderror(java.lang.String aMessage, java.lang.Object... someParameters)Log the specified message atFixtureLogLevel.ERRORlevel.java.util.List<LogLine>getLines()Returns the currently aggregated log lines, but does NOT clear the buffer.voidinfo(java.lang.String aMessage, java.lang.Object... someParameters)Log the specified message atFixtureLogLevel.INFOlevel.voidlog(FixtureLogLevel aLevel, java.lang.String aMessage, java.lang.Object... someParameters)Log the specified message at the specified log level.protected voidprintLogLine(LogLine aLine)Prints the log line on the console.protected java.lang.StringreplaceParameterPlaceholders(java.lang.String aMessage, java.lang.Object... someParameters)Replaces all parameter placeholders in the given message with the given parameters.voidsetThresholdLevel(FixtureLogLevel aThresholdLevel)Sets the threshold level interactively at runtime.protected java.util.List<LogLine>stackTraceToLogLines(java.lang.Throwable anException, FixtureLogLevel aLevel)Formats a stack trace into a list of log lines.voidtrace(java.lang.String aMessage, java.lang.Object... someParameters)Log the specified message atFixtureLogLevel.TRACElevel.voidwarn(java.lang.String aMessage, java.lang.Object... someParameters)Log the specified message atFixtureLogLevel.WARNINGlevel.
-
-
-
Field Detail
-
loggedLines
protected java.util.List<LogLine> loggedLines
All logged lines are collected here.
-
resultLoggedLines
protected java.util.List<LogLine> resultLoggedLines
The unmodifiable collection returned to callers is cached here, in case multiple callers need the same one.
-
thresholdLevel
protected FixtureLogLevel thresholdLevel
Only log messages that equal this level or are coarser than it will be logged.
-
LOG_TRACE_PROPERTY
public static final java.lang.String LOG_TRACE_PROPERTY
Set this system property to turn on verbose logging of fixture log output. Log output on levelFixtureLogLevel.TRACEwill not be actually logged otherwise, since the default level isFixtureLogLevel.DEBUG.- See Also:
- Constant Field Values
-
consoleOutputInterceptor
@Inject protected ConsoleOutputInterceptor consoleOutputInterceptor
The console interceptor.
-
FIXTURE_LOG_CONSOLE_PREFIX
protected static final java.lang.String FIXTURE_LOG_CONSOLE_PREFIX
The prefix for fixture log lines that are being printed on the console.- See Also:
- Constant Field Values
-
PARAM_START
protected static final char PARAM_START
Parameter placeholders are started with this char.- See Also:
- Constant Field Values
-
PARAM_STOP
protected static final char PARAM_STOP
Parameter placeholders end with this char.- See Also:
- Constant Field Values
-
PARAM_STR
protected static final java.lang.String PARAM_STR
This string is the parameter placeholder.- See Also:
- Constant Field Values
-
ESCAPE_CHAR
protected static final char ESCAPE_CHAR
The escape character, which can be used to actually put thePARAM_STRpattern into a log message without it being replaced. It can itself be escaped by prepending it with itself.- See Also:
- Constant Field Values
-
-
Method Detail
-
setThresholdLevel
public void setThresholdLevel(FixtureLogLevel aThresholdLevel)
Sets the threshold level interactively at runtime. Only log messages that equal this level or are coarser than it will be logged.- Parameters:
aThresholdLevel- the level to compare with
-
getLines
public java.util.List<LogLine> getLines()
Description copied from interface:AggregatingFixtureLoggerReturns the currently aggregated log lines, but does NOT clear the buffer. This method guarantees to return a finalized collection that will not be modified anymore by the aggregator.- Specified by:
getLinesin interfaceAggregatingFixtureLogger- Returns:
- the logged lines
-
clearLines
public void clearLines()
Description copied from interface:AggregatingFixtureLoggerClears any lines currently stored in the logger.- Specified by:
clearLinesin interfaceAggregatingFixtureLogger
-
log
public void log(FixtureLogLevel aLevel, java.lang.String aMessage, java.lang.Object... someParameters)
Description copied from interface:FixtureLoggerLog the specified message at the specified log level. The message may contain placeholders "{}" which will be replaced by the respective parameter provided (order of parameters is mapped onto order of placeholders). Non-String parameters are converted toStrings by calling toString().An exception is the last parameter: if it is a
Throwable, it is not considered to be a "normal" parameter for a placeholder. Instead, the stacktrace of theThrowableis logged as part of the log message.- Specified by:
login interfaceFixtureLogger- Parameters:
aLevel- the log levelaMessage- the message to log (possibly with placeholders)someParameters- parameters to insert into placeholders, optionally aThrowableat the end of the list
-
printLogLine
protected void printLogLine(LogLine aLine)
Prints the log line on the console.- Parameters:
aLine-
-
stackTraceToLogLines
protected java.util.List<LogLine> stackTraceToLogLines(java.lang.Throwable anException, FixtureLogLevel aLevel)
Formats a stack trace into a list of log lines. This is more convenient for fixture logging purposes, even though it breaks with some common conventions regarding stack trace logging.- Parameters:
anException- the exception from which to get the stack trace- Returns:
- the stack trace as a list of
LogLines
-
error
public void error(java.lang.String aMessage, java.lang.Object... someParameters)Description copied from interface:FixtureLoggerLog the specified message atFixtureLogLevel.ERRORlevel. The message may contain placeholders "{}" which will be replaced by the respective parameter provided (order of parameters is mapped onto order of placeholders). Non-String parameters are converted toStrings by calling toString().An exception is the last parameter: if it is a
Throwable, it is not considered to be a "normal" parameter for a placeholder. Instead, the stacktrace of theThrowableis logged as part of the log message.- Specified by:
errorin interfaceFixtureLogger- Parameters:
aMessage- the message to log (possibly with placeholders)someParameters- parameters to insert into placeholders, optionally aThrowableat the end of the list
-
warn
public void warn(java.lang.String aMessage, java.lang.Object... someParameters)Description copied from interface:FixtureLoggerLog the specified message atFixtureLogLevel.WARNINGlevel. The message may contain placeholders "{}" which will be replaced by the respective parameter provided (order of parameters is mapped onto order of placeholders). Non-String parameters are converted toStrings by calling toString().An exception is the last parameter: if it is a
Throwable, it is not considered to be a "normal" parameter for a placeholder. Instead, the stacktrace of theThrowableis logged as part of the log message.- Specified by:
warnin interfaceFixtureLogger- Parameters:
aMessage- the message to log (possibly with placeholders)someParameters- parameters to insert into placeholders, optionally aThrowableat the end of the list
-
info
public void info(java.lang.String aMessage, java.lang.Object... someParameters)Description copied from interface:FixtureLoggerLog the specified message atFixtureLogLevel.INFOlevel. The message may contain placeholders "{}" which will be replaced by the respective parameter provided (order of parameters is mapped onto order of placeholders). Non-String parameters are converted toStrings by calling toString().An exception is the last parameter: if it is a
Throwable, it is not considered to be a "normal" parameter for a placeholder. Instead, the stacktrace of theThrowableis logged as part of the log message.- Specified by:
infoin interfaceFixtureLogger- Parameters:
aMessage- the message to log (possibly with placeholders)someParameters- parameters to insert into placeholders, optionally aThrowableat the end of the list
-
debug
public void debug(java.lang.String aMessage, java.lang.Object... someParameters)Description copied from interface:FixtureLoggerLog the specified message atFixtureLogLevel.DEBUGlevel. The message may contain placeholders "{}" which will be replaced by the respective parameter provided (order of parameters is mapped onto order of placeholders). Non-String parameters are converted toStrings by calling toString().An exception is the last parameter: if it is a
Throwable, it is not considered to be a "normal" parameter for a placeholder. Instead, the stacktrace of theThrowableis logged as part of the log message.- Specified by:
debugin interfaceFixtureLogger- Parameters:
aMessage- the message to log (possibly with placeholders)someParameters- parameters to insert into placeholders, optionally aThrowableat the end of the list
-
trace
public void trace(java.lang.String aMessage, java.lang.Object... someParameters)Description copied from interface:FixtureLoggerLog the specified message atFixtureLogLevel.TRACElevel. The message may contain placeholders "{}" which will be replaced by the respective parameter provided (order of parameters is mapped onto order of placeholders). Non-String parameters are converted toStrings by calling toString().An exception is the last parameter: if it is a
Throwable, it is not considered to be a "normal" parameter for a placeholder. Instead, the stacktrace of theThrowableis logged as part of the log message.- Specified by:
tracein interfaceFixtureLogger- Parameters:
aMessage- the message to log (possibly with placeholders)someParameters- parameters to insert into placeholders, optionally aThrowableat the end of the list
-
replaceParameterPlaceholders
protected java.lang.String replaceParameterPlaceholders(java.lang.String aMessage, java.lang.Object... someParameters)Replaces all parameter placeholders in the given message with the given parameters.- Parameters:
aMessage- the message to processsomeParameters- the parameters to insert- Returns:
- the finished message
-
appendParameter
protected void appendParameter(java.lang.StringBuilder aBuffer, java.lang.Object aParam)Appends the given parameter (which can be an array or a single object).- Parameters:
aBuffer- the buffer to append toaParam- the parameter
-
appendSimpleObjectParameter
protected void appendSimpleObjectParameter(java.lang.StringBuilder aBuffer, java.lang.Object aParam)Appends the given parameter, which at this point must be a single object.- Parameters:
aBuffer- the buffer to append toaParam- the parameter
-
-