+package jalview.bin;
+
+import jalview.log.JLogger;
+import jalview.log.JLoggerI.LogLevel;
+import jalview.log.JLoggerLog4j;
+import jalview.util.ChannelProperties;
+import jalview.util.Log4j;
+import jalview.util.Platform;
+
+public class Console
+{
+
+ public static JLoggerLog4j log;
+
+ public static void debug(String message, Throwable t)
+ {
+ if (Console.initLogger())
+ {
+ log.debug(message, t);
+ }
+ else
+ {
+ System.out.println(message);
+ t.printStackTrace();
+ }
+
+ }
+
+ public static void info(String message)
+ {
+ if (Console.initLogger())
+ {
+ log.info(message, null);
+ }
+ else
+ {
+ System.out.println(message);
+ }
+
+ }
+
+ public static void trace(String message, Throwable t)
+ {
+ if (Console.initLogger())
+ {
+ log.trace(message, t);
+ }
+ else
+ {
+ System.out.println(message);
+ t.printStackTrace();
+ }
+ }
+
+ public static void debug(String message)
+ {
+ if (Console.initLogger())
+ {
+ log.debug(message, null);
+ }
+ else
+ {
+ System.out.println(message);
+ }
+
+ }
+
+ public static void info(String message, Throwable t)
+ {
+ if (Console.initLogger())
+ {
+ log.info(message, t);
+ }
+ else
+ {
+ System.out.println(message);
+ t.printStackTrace();
+ }
+
+ }
+
+ public static void warn(String message)
+ {
+ if (Console.initLogger())
+ {
+ log.warn(message, null);
+ }
+ else
+ {
+ System.out.println(message);
+ }
+
+ }
+
+ public static void trace(String message)
+ {
+ if (Console.initLogger())
+ {
+ log.trace(message, null);
+ }
+ else
+ {
+ System.out.println(message);
+ }
+ }
+
+ public static void warn(String message, Throwable t)
+ {
+ if (Console.initLogger())
+ {
+ log.warn(message, t);
+ }
+ else
+ {
+ System.out.println(message);
+ t.printStackTrace();
+ }
+
+ }
+
+ public static void error(String message)
+ {
+ if (Console.initLogger())
+ {
+ log.error(message, null);
+ }
+ else
+ {
+ System.err.println(message);
+ }
+
+ }
+
+ public static void error(String message, Throwable t)
+ {
+ if (Console.initLogger())
+ {
+ log.error(message, t);
+ }
+ else
+ {
+ System.err.println(message);
+ t.printStackTrace(System.err);
+ }
+
+ }
+
+ public static void fatal(String message)
+ {
+ if (Console.initLogger())
+ {
+ log.fatal(message, null);
+ }
+ else
+ {
+ System.err.println(message);
+ }
+
+ }
+
+ public static void fatal(String message, Throwable t)
+ {
+ if (Console.initLogger())
+ {
+ log.fatal(message, t);
+ }
+ else
+ {
+ System.err.println(message);
+ t.printStackTrace(System.err);
+ }
+
+ }
+
+ public static boolean isDebugEnabled()
+ {
+ return log == null ? false : log.isDebugEnabled();
+ }
+
+ public static boolean isTraceEnabled()
+ {
+ return log == null ? false : log.isTraceEnabled();
+ }
+
+ public static JLogger.LogLevel getCachedLogLevel()
+ {
+ return Console.getCachedLogLevel(Cache.JALVIEWLOGLEVEL);
+ }
+
+ public static JLogger.LogLevel getCachedLogLevel(String key)
+ {
+ return JLogger.toLevel(Cache.getDefault(key, "INFO"));
+ }
+
+ public static boolean initLogger()
+ {
+ if (log != null)
+ {
+ return true;
+ }
+ try
+ {
+ JLogger.LogLevel cachedLevel = getCachedLogLevel();
+ if (!Platform.isJS())
+ {
+ Log4j.init(cachedLevel);
+ }
+ // log output
+ // is laxis used? Does getLogger do anything without a Logger object?
+ // Logger laxis = Log4j.getLogger("org.apache.axis", myLevel);
+ JLoggerLog4j.getLogger("org.apache.axis", cachedLevel);
+
+ // The main application logger
+ log = JLoggerLog4j.getLogger(Cache.JALVIEW_LOGGER_NAME, cachedLevel);
+ } catch (NoClassDefFoundError e)
+ {
+ System.err.println("Could not initialise the logger framework");
+ e.printStackTrace();
+ }
+
+ // Test message
+ if (log != null)
+ {
+ // Logging test message should got through the logger object
+ if (log.loggerExists())
+ log.debug(Console.LOGGING_TEST_MESSAGE);
+ // Tell the user that debug is enabled
+ debug(ChannelProperties.getProperty("app_name")
+ + " Debugging Output Follows.");
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ public final static String LOGGING_TEST_MESSAGE = "Logging to STDERR";
+
+}