3 import java.util.HashMap;
6 import jalview.bin.Cache;
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 Cache.error("Could not parse LogLevel '" + levelString + "'", e);
41 public static JLogger getLogger(String name)
43 return getLogger(name, LogLevel.INFO);
46 public static JLogger getLogger(String name, LogLevel loglevel)
48 return registry.containsKey(name) ? (JLogger) registry.get(name) : null;
55 protected JLogger(String name, LogLevel level)
63 protected void registryStore()
65 registry.put(this.name, this);
68 protected static boolean registryContainsKey(String name)
70 return registry.containsKey(name);
73 protected static JLogger registryGet(String name)
75 return registry.get(name);
78 public LogLevel getLevel()
83 public void setLevel(LogLevel level)
87 loggerSetLevel(level);
90 private boolean println(LogLevel level, String message, Throwable t)
92 if (!loggerExists() || Platform.isJS())
94 String logLine = String.format("%s: %s", level.toString(), message);
95 System.out.println(logLine);
98 if (level.compareTo(LogLevel.DEBUG) <= 0)
99 t.printStackTrace(System.err);
101 System.err.println(t.getMessage());
107 loggerLogMessage(level, message, t);
112 public void trace(String message)
114 trace(message, null);
117 public void trace(String message, Throwable t)
119 println(LogLevel.TRACE, message, t);
122 public void debug(String message)
124 debug(message, null);
127 public void debug(String message, Throwable t)
129 println(LogLevel.DEBUG, message, t);
132 public void info(String message)
137 public void info(String message, Throwable t)
139 println(LogLevel.INFO, message, t);
142 public void warn(String message)
147 public void warn(String message, Throwable t)
149 println(LogLevel.WARN, message, t);
152 public void error(String message)
154 error(message, null);
157 public void error(String message, Throwable t)
159 println(LogLevel.ERROR, message, t);
162 public void fatal(String message)
164 fatal(message, null);
167 public void fatal(String message, Throwable t)
169 println(LogLevel.FATAL, message, t);
172 public boolean isDebugEnabled()
174 return level.compareTo(LogLevel.DEBUG) <= 0;
177 public boolean isTraceEnabled()
179 return level.compareTo(LogLevel.TRACE) <= 0;