package io.myweb.processor.velocity;
import org.apache.velocity.runtime.RuntimeServices;
import org.apache.velocity.runtime.log.LogChute;
import javax.annotation.processing.Messager;
import static javax.tools.Diagnostic.Kind;
import static org.apache.commons.lang3.exception.ExceptionUtils.getStackTrace;
/**
* Logger implementation used internally by Velocity.
*/
public class VelocityLogger implements LogChute {
private static final boolean LOG_WARN = true;
private static final boolean LOG_ERROR = true;
private static final boolean LOG_INFO = true;
private static final boolean LOG_DEBUG = false;
private static final boolean LOG_TRACE = false;
public static final String LOG_PREFIX = "Velocity";
private final Messager messager;
public VelocityLogger(Messager messager) {
this.messager = messager;
}
private void log(Kind kind, String msg) {
messager.printMessage(kind, msg);
}
private void log(Kind kind, String msg, Throwable t) {
messager.printMessage(kind, msg + "\n" + getStackTrace(t));
}
@Override
public void init(RuntimeServices rs) throws Exception {
}
@Override
public void log(int level, String message) {
if (isLevelEnabled(level)) {
switch (level) {
case LogChute.WARN_ID:
log(Kind.WARNING, LOG_PREFIX + LogChute.WARN_PREFIX + message);
break;
case LogChute.ERROR_ID:
log(Kind.ERROR, LOG_PREFIX + LogChute.ERROR_PREFIX + message);
break;
case LogChute.INFO_ID:
log(Kind.NOTE, LOG_PREFIX + LogChute.INFO_PREFIX + message);
break;
case LogChute.DEBUG_ID:
log(Kind.NOTE, LOG_PREFIX + LogChute.DEBUG_PREFIX + message);
break;
case LogChute.TRACE_ID:
log(Kind.NOTE, LOG_PREFIX + LogChute.TRACE_PREFIX + message);
break;
default:
logFatal(level);
}
}
}
@Override
public void log(int level, String message, Throwable t) {
if (isLevelEnabled(level)) {
switch (level) {
case LogChute.WARN_ID:
log(Kind.WARNING, LOG_PREFIX + LogChute.WARN_PREFIX + message, t);
break;
case LogChute.ERROR_ID:
log(Kind.ERROR, LOG_PREFIX + LogChute.ERROR_PREFIX + message, t);
break;
case LogChute.INFO_ID:
log(Kind.NOTE, LOG_PREFIX + LogChute.INFO_PREFIX + message, t);
break;
case LogChute.DEBUG_ID:
log(Kind.NOTE, LOG_PREFIX + LogChute.DEBUG_PREFIX + message, t);
break;
case LogChute.TRACE_ID:
log(Kind.NOTE, LOG_PREFIX + LogChute.TRACE_PREFIX + message, t);
break;
default:
logFatal(level);
}
}
}
private void logFatal(int level) {
log(Kind.ERROR, LOG_PREFIX + " unknown velocity level " + level + " (check your code)");
}
@Override
public boolean isLevelEnabled(int level) {
switch (level) {
case LogChute.WARN_ID:
return LOG_WARN;
case LogChute.ERROR_ID:
return LOG_ERROR;
case LogChute.INFO_ID:
return LOG_INFO;
case LogChute.DEBUG_ID:
return LOG_DEBUG;
case LogChute.TRACE_ID:
return LOG_TRACE;
default:
logFatal(level);
return true;
}
}
}