Merge branch 'develop' into feature/r2_11_2/JAL-3808_gff2_exonerate
[jalview.git] / src / jalview / bin / Console.java
diff --git a/src/jalview/bin/Console.java b/src/jalview/bin/Console.java
new file mode 100644 (file)
index 0000000..0b5a38a
--- /dev/null
@@ -0,0 +1,240 @@
+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";
+
+}