001 package org.maltparser.core.helper;
002
003 import org.apache.log4j.ConsoleAppender;
004 import org.apache.log4j.Level;
005 import org.apache.log4j.Logger;
006 import org.apache.log4j.PatternLayout;
007
008 /**
009 *
010 *
011 * @author Johan Hall
012 */
013 public 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 }