package org.openstack.atlas.util.common;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class VerboseLogger {
private Log LOG;
private LogLevel level;
private static final LogLevel defaultLogLevel = LogLevel.INFO; // Change this to what ever log is allowed to be noisy.
public static enum LogLevel {
INFO, WARN, DEBUG, ERROR, FATAL, NULL
};
public VerboseLogger(Class aClass){
this.LOG = LogFactory.getLog(aClass);
this.level = defaultLogLevel;
}
public VerboseLogger(Class aClass,LogLevel level){
this.LOG = LogFactory.getLog(aClass);
this.level = level;
}
public void log(Object obj) {
switch (level) {
case DEBUG:
LOG.debug(obj);
break;
case ERROR:
LOG.error(obj);
break;
case FATAL:
LOG.fatal(obj);
break;
case INFO:
LOG.info(obj);
break;
case WARN:
LOG.warn(obj);
break;
case NULL:
default:
break;
}
}
public void log(Object obj, Throwable th) {
switch (level) {
case DEBUG:
LOG.debug(obj, th);
break;
case ERROR:
LOG.error(obj, th);
break;
case FATAL:
LOG.fatal(obj, th);
break;
case INFO:
LOG.info(obj, th);
break;
case WARN:
LOG.warn(obj, th);
break;
case NULL:
default:
break;
}
}
public Log getLOG() {
return LOG;
}
public void setLOG(Log LOG) {
this.LOG = LOG;
}
public LogLevel getLevel() {
return level;
}
public void setLevel(LogLevel level) {
this.level = level;
}
public void printf(String fmt,Object... args){
String logLine = String.format(fmt,args);
log(logLine);
}
}