public static Profiler create(Logger logger) { return new DefaultProfiler(logger); }
private long doStop(LoggerLevel level, @Nullable String message, @Nullable Object[] args, String messageSuffix) { if (startTime == 0L) { throw new IllegalStateException("Profiler must be started before being stopped"); } long duration = System2.INSTANCE.now() - startTime; if (shouldLog(logger, level)) { StringBuilder sb = new StringBuilder(); if (!StringUtils.isEmpty(message)) { sb.append(message); sb.append(messageSuffix); } if (logTimeLast) { appendContext(sb); appendTime(sb, duration); } else { appendTime(sb, duration); appendContext(sb); } log(level, sb.toString(), args); } reset(); return duration; }
@Override public Profiler startDebug(String message, Object... args) { return doStart(LoggerLevel.DEBUG, message, args); }
private Profiler doStart(LoggerLevel logLevel, String message, Object... args) { init(message, args); logStartMessage(logLevel, message, args); return this; }
private void logStartMessage(LoggerLevel loggerLevel, String message, Object... args) { if (shouldLog(logger, loggerLevel)) { StringBuilder sb = new StringBuilder(); sb.append(message); appendContext(sb); log(loggerLevel, sb.toString(), args); } }
void log(LoggerLevel level, String msg, @Nullable Object[] args) { switch (level) { case TRACE: logTrace(msg, args); break; case DEBUG: logDebug(msg, args); break; case INFO: logInfo(msg, args); break; case WARN: logWarn(msg, args); break; case ERROR: logError(msg, args); break; default: throw new IllegalArgumentException("Unsupported LoggerLevel value: " + level); } }
@Override public long stopTrace(String message) { return doStop(LoggerLevel.TRACE, message, null, NO_MESSAGE_SUFFIX); }
@Override public long stopDebug() { return doStopWithoutMessage(LoggerLevel.DEBUG); }
void log(LoggerLevel level, String msg, @Nullable Object[] args) { switch (level) { case TRACE: logTrace(msg, args); break; case DEBUG: logDebug(msg, args); break; case INFO: logInfo(msg, args); break; case WARN: logWarn(msg, args); break; case ERROR: logError(msg, args); break; default: throw new IllegalArgumentException("Unsupported LoggerLevel value: " + level); } }
private void logStartMessage(LoggerLevel loggerLevel, String message, Object... args) { if (shouldLog(logger, loggerLevel)) { StringBuilder sb = new StringBuilder(); sb.append(message); appendContext(sb); log(loggerLevel, sb.toString(), args); } }
@Override public long stopInfo(String message, Object... args) { return doStop(LoggerLevel.INFO, message, args, NO_MESSAGE_SUFFIX); }
private Profiler doStart(LoggerLevel logLevel, String message, Object... args) { init(message, args); logStartMessage(logLevel, message, args); return this; }
@Override public long stopInfo() { return doStopWithoutMessage(LoggerLevel.INFO); }
private long doStop(LoggerLevel level, @Nullable String message, @Nullable Object[] args, String messageSuffix) { if (startTime == 0L) { throw new IllegalStateException("Profiler must be started before being stopped"); } long duration = System2.INSTANCE.now() - startTime; if (shouldLog(logger, level)) { StringBuilder sb = new StringBuilder(); if (!StringUtils.isEmpty(message)) { sb.append(message); sb.append(messageSuffix); } if (logTimeLast) { appendContext(sb); appendTime(sb, duration); } else { appendTime(sb, duration); appendContext(sb); } log(level, sb.toString(), args); } reset(); return duration; }
@Override public long stopDebug(String message) { return doStop(LoggerLevel.DEBUG, message, null, NO_MESSAGE_SUFFIX); }
@Override public Profiler startTrace(String message) { return doStart(LoggerLevel.TRACE, message); }
@Override public long stopTrace() { return doStopWithoutMessage(LoggerLevel.TRACE); }
public static Profiler create(Logger logger) { return new DefaultProfiler(logger); }
@Override public long stopDebug(String message, Object... args) { return doStop(LoggerLevel.DEBUG, message, args, NO_MESSAGE_SUFFIX); }
@Override public Profiler startInfo(String message, Object... args) { return doStart(LoggerLevel.INFO, message, args); }