3 import java.util.HashMap;
6 import jalview.bin.Console;
7 import jalview.util.Platform;
9 public abstract class JLogger implements JLoggerI
11 protected String name;
13 protected LogLevel level;
15 private Object logger = null;
17 private static Map<String, JLogger> registry = new HashMap<>();
19 // implement these abstract methods
20 protected abstract void loggerSetup();
22 public abstract boolean loggerExists();
24 protected abstract void loggerSetLevel(LogLevel level);
26 protected abstract void loggerLogMessage(LogLevel level, String message,
29 public static LogLevel toLevel(String levelString)
33 return LogLevel.valueOf(levelString);
34 } catch (IllegalArgumentException e)
36 Console.error("Could not parse LogLevel '" + levelString + "'", e);
41 public static JLogger getLogger(Class c)
46 public static JLogger getLogger(Class c, LogLevel loglevel)
48 return getLogger(c.getCanonicalName(), loglevel);
51 public static JLogger getLogger(String name)
53 return getLogger(name, LogLevel.INFO);
56 public static JLogger getLogger(String name, LogLevel loglevel)
58 return registry.containsKey(name) ? (JLogger) registry.get(name) : null;
65 protected JLogger(String name, LogLevel level)
73 protected void registryStore()
75 registry.put(this.name, this);
78 protected static boolean registryContainsKey(String name)
80 return registry.containsKey(name);
83 protected static JLogger registryGet(String name)
85 return registry.get(name);
88 public LogLevel getLevel()
93 public void setLevel(LogLevel level)
97 loggerSetLevel(level);
100 private boolean println(LogLevel loglevel, String message, Throwable t)
102 if (loglevel.compareTo(this.level) < 0)
106 if (!loggerExists() || Platform.isJS())
108 String logLine = String.format("%s: %s", loglevel.toString(),
110 System.out.println(logLine);
113 if (loglevel.compareTo(LogLevel.DEBUG) <= 0)
114 t.printStackTrace(System.err);
116 System.err.println(t.getMessage());
122 loggerLogMessage(loglevel, message, t);
127 public void trace(String message)
129 trace(message, null);
132 public void trace(String message, Throwable t)
134 println(LogLevel.TRACE, message, t);
137 public void debug(String message)
139 debug(message, null);
142 public void debug(String message, Throwable t)
144 println(LogLevel.DEBUG, message, t);
147 public void info(String message)
152 public void info(String message, Throwable t)
154 println(LogLevel.INFO, message, t);
157 public void warn(String message)
162 public void warn(String message, Throwable t)
164 println(LogLevel.WARN, message, t);
167 public void error(String message)
169 error(message, null);
172 public void error(String message, Throwable t)
174 println(LogLevel.ERROR, message, t);
177 public void fatal(String message)
179 fatal(message, null);
182 public void fatal(String message, Throwable t)
184 println(LogLevel.FATAL, message, t);
187 public boolean isDebugEnabled()
189 return level.compareTo(LogLevel.DEBUG) <= 0;
192 public boolean isTraceEnabled()
194 return level.compareTo(LogLevel.TRACE) <= 0;