package railo.commons.io.log;
import java.io.PrintWriter;
import railo.commons.lang.SystemOut;
import railo.runtime.config.Config;
/**
* log for Console
*/
public final class LogConsole implements Log {
private static LogConsole[] singeltons=new LogConsole[Log.LEVEL_FATAL+1];
/*{
new LogConsole(Log.LEVEL_INFO),
new LogConsole(Log.LEVEL_DEBUG),
new LogConsole(Log.LEVEL_WARN),
new LogConsole(Log.LEVEL_ERROR),
new LogConsole(Log.LEVEL_FATAL)
};*/
private int logLevel;
private PrintWriter writer;
public LogConsole(int logLevel, PrintWriter writer) {
this.logLevel=logLevel;
this.writer=writer;
}
public static LogConsole getInstance(Config config,int logLevel) {
if(singeltons[logLevel]==null) {
if(config==null || config.getOutWriter()==null)
return new LogConsole(logLevel,new PrintWriter(System.out));
singeltons[logLevel]=new LogConsole(logLevel,config.getOutWriter());
}
return singeltons[logLevel];
}
@Override
public void log(int level, String application, String message) {
if(level>=logLevel)SystemOut.print(writer, LogUtil.getLine(level,application,message));
}
@Override
public void info(String application, String message) {
log(LEVEL_INFO,application,message);
}
@Override
public void debug(String application, String message) {
log(LEVEL_DEBUG,application,message);
}
@Override
public void warn(String application, String message) {
log(LEVEL_WARN,application,message);
}
@Override
public void error(String application, String message) {
log(LEVEL_ERROR,application,message);
}
@Override
public void fatal(String application, String message) {
log(LEVEL_FATAL,application,message);
}
@Override
public int getLogLevel() {
return logLevel;
}
@Override
public void setLogLevel(int level) {
this.logLevel=level;
}
}