in twill-api/src/main/java/org/apache/twill/api/logging/PrinterLogHandler.java [58:95]
public void onLog(LogEntry logEntry) {
String utc = timestampToUTC(logEntry.getTimestamp());
formatter.format("%s %-5s %s [%s] [%s] %s:%s(%s:%d) - %s\n",
utc,
logEntry.getLogLevel().name(),
getShortenLoggerName(logEntry.getLoggerName()),
logEntry.getHost(),
logEntry.getThreadName(),
getSimpleClassName(logEntry.getSourceClassName()),
logEntry.getSourceMethodName(),
logEntry.getFileName(),
logEntry.getLineNumber(),
logEntry.getMessage());
formatter.flush();
// Prints the throwable and stack trace.
LogThrowable throwable = logEntry.getThrowable();
while (throwable != null) {
writer.append(throwable.getClassName()).append(": ").append(throwable.getMessage());
writer.println();
StackTraceElement[] stackTraces = throwable.getStackTraces();
if (stackTraces != null) {
for (StackTraceElement stackTrace : stackTraces) {
writer.append("\tat ").append(stackTrace.toString());
writer.println();
}
}
throwable = throwable.getCause();
if (throwable != null) {
writer.append("Caused by: ");
}
}
writer.flush();
}