X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fjavascript%2Flog4j%2FLogger.java;fp=src%2Fjalview%2Fjavascript%2Flog4j%2FLogger.java;h=bb7eb343c9ef2eaeb1188d4981820030fd550939;hb=4f30214e8098748469c6a4269ac2ed6c5750e4b0;hp=0000000000000000000000000000000000000000;hpb=9dabc02511e3a334a5749a504f57f69d6c9017bd;p=jalview.git diff --git a/src/jalview/javascript/log4j/Logger.java b/src/jalview/javascript/log4j/Logger.java new file mode 100644 index 0000000..bb7eb34 --- /dev/null +++ b/src/jalview/javascript/log4j/Logger.java @@ -0,0 +1,194 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ +package jalview.javascript.log4j; + +import jalview.javascript.log4j.spi.LoggingEvent; + +import java.util.Hashtable; +import java.util.Map; + +public class Logger +{ + + private static Map registry; + + private String name; + + private Level level; + + private boolean enabled = true; + + private boolean isEnabled; + + private Appender appender; + + private Logger(String name) + { + this.name = name; + } + + public static Logger getLogger(String name) + { + if (registry == null) + { + registry = new Hashtable<>(); + getLogger("root"); + } + Logger logger = registry.get(name); + if (logger == null) + { + registry.put(name, logger = new Logger(name)); + logger.setLevel(Level.INFO); + } + return logger; + } + + public static Logger getRootLogger() + { + return getLogger("root"); + } + + public void setLevel(Level l) + { + this.level = l; + } + + public void addAppender(Appender appender) + { + this.appender = appender; + } + + public boolean isDebugEnabled() + { + return isEnabled; + } + + public void debug(Object o) + { + debug(o, null); + } + + public void debug(Object o, Throwable e) + { + switch (level.level) + { + case Priority.FATAL_INT: + case Priority.ERROR_INT: + case Priority.WARN_INT: + case Priority.INFO_INT: + case Priority.DEBUG_INT: + log(o, e); + break; + } + } + + public void info(Object o) + { + info(o, null); + } + + public void info(Object o, Throwable e) + { + switch (level.level) + { + case Priority.FATAL_INT: + case Priority.ERROR_INT: + case Priority.WARN_INT: + case Priority.INFO_INT: + log(o, e); + break; + } + + } + + public void warn(Object o) + { + warn(o, null); + } + + public void warn(Object o, Throwable e) + { + switch (level.level) + { + case Priority.FATAL_INT: + case Priority.ERROR_INT: + case Priority.WARN_INT: + log(o, e); + break; + } + + } + + public void error(Object o) + { + error(o, null); + } + + public void error(Object o, Throwable e) + { + switch (level.level) + { + case Priority.FATAL_INT: + case Priority.ERROR_INT: + log(o, e); + break; + } + + } + + private void log(Object s, Throwable e) + { + switch (level.level) + { + case Priority.ERROR_INT: + if (appender == null) + { + System.err.println(s); + return; + } + break; + case Priority.WARN_INT: + if (appender == null) + { + System.err.println(s); + return; + } + break; + case Priority.INFO_INT: + if (appender == null) + { + System.out.println(s); + return; + } + break; + case Priority.DEBUG_INT: + if (appender == null) + { + System.out.println(s); + return; + } + break; + } + e.printStackTrace(); + appender.append(new LoggingEvent(this, s.toString(), level)); + } + +}