001    package railo.commons.io.log;
002    
003    import java.io.PrintWriter;
004    
005    import railo.commons.lang.SystemOut;
006    import railo.runtime.config.Config;
007    
008    
009    /**
010     * log for Console
011     */
012    public final class LogConsole implements Log {
013        
014        private static LogConsole[]  singeltons=new LogConsole[Log.LEVEL_FATAL+1];
015        /*{
016            new LogConsole(Log.LEVEL_INFO),
017            new LogConsole(Log.LEVEL_DEBUG),
018            new LogConsole(Log.LEVEL_WARN),
019            new LogConsole(Log.LEVEL_ERROR),
020            new LogConsole(Log.LEVEL_FATAL)
021        };*/
022    
023        private int logLevel;
024    
025            private PrintWriter writer;
026        
027        public LogConsole(int logLevel, PrintWriter writer) {
028            this.logLevel=logLevel;
029            this.writer=writer;
030        }
031        
032        public static LogConsole getInstance(Config config,int logLevel) {
033            if(singeltons[logLevel]==null) {
034                    if(config==null || config.getOutWriter()==null)
035                            return new LogConsole(logLevel,new PrintWriter(System.out));
036                    
037                    singeltons[logLevel]=new LogConsole(logLevel,config.getOutWriter());
038            }
039            return singeltons[logLevel];
040        }
041        
042        @Override
043        public void log(int level, String application, String message) {
044            if(level>=logLevel)SystemOut.print(writer, LogUtil.getLine(level,application,message));
045        }
046    
047        @Override
048        public void info(String application, String message) {
049            log(LEVEL_INFO,application,message);
050        }
051        @Override
052        public void debug(String application, String message) {
053            log(LEVEL_DEBUG,application,message);    
054        }
055        @Override
056        public void warn(String application, String message) {
057            log(LEVEL_WARN,application,message);
058        }
059        @Override
060        public void error(String application, String message) {
061            log(LEVEL_ERROR,application,message);
062        }
063        @Override
064        public void fatal(String application, String message) {
065            log(LEVEL_FATAL,application,message);
066        }
067    
068        @Override
069        public int getLogLevel() {
070            return logLevel;
071        }
072    
073        @Override
074        public void setLogLevel(int level) {
075            this.logLevel=level;
076        }
077    
078    }