package org.radargun.logging;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Log with level fixed to INFO, writing to stdout.
*
* @author Radim Vansa <rvansa@redhat.com>
*/
public class StdOutLog implements Log {
private final String className;
private final ThreadLocal<SimpleDateFormat> dateTimeFormatter = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("HH:mm:ss.SSS");
}
};
public StdOutLog(String className) {
this.className = className;
}
private String getTime() {
return dateTimeFormatter.get().format(new Date());
}
@Override
public void trace(String message) {
}
@Override
public void trace(String message, Throwable throwable) {
}
@Override
public void tracef(String format, Object... args) {
}
@Override
public void tracef(Throwable throwable, String format, Object... args) {
}
@Override
public boolean isTraceEnabled() {
return false;
}
@Override
public void debug(String message) {
}
@Override
public void debug(String message, Throwable throwable) {
}
@Override
public void debugf(String format, Object... args) {
}
@Override
public void debugf(Throwable throwable, String format, Object... args) {
}
@Override
public boolean isDebugEnabled() {
return false;
}
@Override
public void info(String message) {
System.out.printf("INFO\t%s [%s] (%s) %s\n", getTime(), className, Thread.currentThread().getName(), message);
}
@Override
public void info(String message, Throwable throwable) {
System.out.printf("INFO\t%s [%s] (%s) %s\n", getTime(), className, Thread.currentThread().getName(), message);
throwable.printStackTrace(System.out);
}
@Override
public void infof(String format, Object... args) {
System.out.printf("INFO\t%s [%s] (%s) " + format + "\n", prefix(args));
}
@Override
public void infof(Throwable throwable, String format, Object... args) {
System.out.printf("INFO\t%s [%s] (%s) " + format + "\n", prefix(args));
throwable.printStackTrace(System.out);
}
@Override
public boolean isInfoEnabled() {
return true;
}
@Override
public void warn(String message) {
System.out.printf("WARN\t%s [%s] (%s) %s\n", getTime(), className, Thread.currentThread().getName(), message);
}
@Override
public void warn(String message, Throwable throwable) {
System.out.printf("WARN\t%s [%s] (%s) %s\n", getTime(), className, Thread.currentThread().getName(), message);
throwable.printStackTrace(System.out);
}
@Override
public void warnf(String format, Object... args) {
System.out.printf("WARN\t%s [%s] (%s) " + format + "\n", prefix(args));
}
@Override
public void warnf(Throwable throwable, String format, Object... args) {
System.out.printf("WARN\t%s [%s] (%s) " + format + "\n", prefix(args));
throwable.printStackTrace(System.out);
}
@Override
public boolean isWarnEnabled() {
return true;
}
@Override
public void error(String message) {
System.out.printf("ERROR\t%s [%s] (%s) %s\n", getTime(), className, Thread.currentThread().getName(), message);
}
@Override
public void error(String message, Throwable throwable) {
System.out.printf("ERROR\t%s [%s] (%s) %s\n", getTime(), className, Thread.currentThread().getName(), message);
throwable.printStackTrace(System.out);
}
@Override
public void errorf(String format, Object... args) {
System.out.printf("ERROR\t%s [%s] (%s) " + format + "\n", prefix(args));
}
@Override
public void errorf(Throwable throwable, String format, Object... args) {
System.out.printf("ERROR\t%s [%s] (%s) " + format + "\n", prefix(args));
throwable.printStackTrace(System.out);
}
@Override
public boolean isErrorEnabled() {
return true;
}
@Override
public void fatal(String message) {
System.out.printf("FATAL\t%s [%s] (%s) %s\n", getTime(), className, Thread.currentThread().getName(), message);
}
@Override
public void fatal(String message, Throwable throwable) {
System.out.printf("FATAL\t%s [%s] (%s) %s\n", getTime(), className, Thread.currentThread().getName(), message);
throwable.printStackTrace(System.out);
}
@Override
public void fatalf(String format, Object... args) {
System.out.printf("FATAL\t%s [%s] (%s) " + format + "\n", prefix(args));
}
@Override
public void fatalf(Throwable throwable, String format, Object... args) {
System.out.printf("FATAL\t%s [%s] (%s) " + format + "\n", prefix(args));
throwable.printStackTrace(System.out);
}
@Override
public boolean isFatalEnabled() {
return true;
}
@Override
public Level getLevel() {
return Level.INFO;
}
@Override
public void setLevel(Level level) {
throw new UnsupportedOperationException();
}
private Object[] prefix(Object[] args) {
return new Object[] {getTime(), className, Thread.currentThread().getName(), args};
}
}