001package org.maltparser.core.helper;
002
003import org.apache.log4j.ConsoleAppender;
004import org.apache.log4j.Level;
005import org.apache.log4j.Logger;
006import org.apache.log4j.PatternLayout;
007
008/**
009*
010*
011* @author Johan Hall
012*/
013public class SystemLogger {
014        private static SystemLogger uniqueInstance = new SystemLogger();
015        private static Logger systemLogger;
016        private Level systemVerbosityLevel;
017        private ConsoleAppender consoleAppender;
018        
019        private SystemLogger() { 
020                systemLogger = Logger.getLogger("System");
021                /* System verbosity (Standard Out) */
022                consoleAppender = new ConsoleAppender(new PatternLayout("%m"), ConsoleAppender.SYSTEM_ERR);
023                consoleAppender.setEncoding("UTF-16");
024                systemLogger.addAppender(consoleAppender);
025                if (System.getProperty("Malt.verbosity") != null) {
026                        setSystemVerbosityLevel(System.getProperty("Malt.verbosity").toUpperCase());
027                } else {
028                        setSystemVerbosityLevel("INFO");
029                }
030        }
031        
032        /**
033        * Returns a reference to the single instance.
034        */
035        public static SystemLogger instance() {
036                return uniqueInstance;
037        }
038        
039        /**
040        * Returns a reference to the Logger.
041        */
042        public static Logger logger() {
043                return systemLogger;
044        }
045        
046        /**
047         * Returns the system verbosity level
048         * 
049         * @return the system verbosity level
050         */
051        public Level getSystemVerbosityLevel() {
052                return systemVerbosityLevel;
053        }
054
055        /**
056         * Sets the system verbosity level
057         * 
058         * @param verbosity     a system verbosity level
059         */
060        public void setSystemVerbosityLevel(String verbosity) {
061                this.systemVerbosityLevel = Level.toLevel(verbosity, Level.INFO);
062                consoleAppender.setThreshold(systemVerbosityLevel);
063                systemLogger.setLevel(systemVerbosityLevel);
064        }
065}