X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2FConsole.java;h=1b230eca871b91d51c54d661d5b87a399693a3a6;hb=ca160187a050f6d4e50158cd5b51f75c83a7179e;hp=0b5a38afbbc7e1bf7a8a0f934818678ff78d46ac;hpb=cb8e52fbbc5f725e3f7f48c672cdddb0690bd978;p=jalview.git diff --git a/src/jalview/bin/Console.java b/src/jalview/bin/Console.java index 0b5a38a..1b230ec 100644 --- a/src/jalview/bin/Console.java +++ b/src/jalview/bin/Console.java @@ -1,6 +1,30 @@ +/* + * 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.bin; +import java.io.PrintStream; +import java.util.Locale; + import jalview.log.JLogger; +import jalview.log.JLoggerI; import jalview.log.JLoggerI.LogLevel; import jalview.log.JLoggerLog4j; import jalview.util.ChannelProperties; @@ -20,10 +44,10 @@ public class Console } else { - System.out.println(message); - t.printStackTrace(); + outPrintln(message); + Console.printStackTrace(t); } - + } public static void info(String message) @@ -34,9 +58,9 @@ public class Console } else { - System.out.println(message); + outPrintln(message); } - + } public static void trace(String message, Throwable t) @@ -47,8 +71,8 @@ public class Console } else { - System.out.println(message); - t.printStackTrace(); + outPrintln(message); + Console.printStackTrace(t); } } @@ -60,9 +84,9 @@ public class Console } else { - System.out.println(message); + outPrintln(message); } - + } public static void info(String message, Throwable t) @@ -73,10 +97,10 @@ public class Console } else { - System.out.println(message); - t.printStackTrace(); + outPrintln(message); + Console.printStackTrace(t); } - + } public static void warn(String message) @@ -87,9 +111,9 @@ public class Console } else { - System.out.println(message); + outPrintln(message); } - + } public static void trace(String message) @@ -100,7 +124,7 @@ public class Console } else { - System.out.println(message); + outPrintln(message); } } @@ -112,10 +136,10 @@ public class Console } else { - System.out.println(message); - t.printStackTrace(); + outPrintln(message); + Console.printStackTrace(t); } - + } public static void error(String message) @@ -126,9 +150,9 @@ public class Console } else { - System.err.println(message); + jalview.bin.Console.errPrintln(message); } - + } public static void error(String message, Throwable t) @@ -139,10 +163,10 @@ public class Console } else { - System.err.println(message); - t.printStackTrace(System.err); + jalview.bin.Console.errPrintln(message); + Console.printStackTrace(t); } - + } public static void fatal(String message) @@ -153,9 +177,9 @@ public class Console } else { - System.err.println(message); + jalview.bin.Console.errPrintln(message); } - + } public static void fatal(String message, Throwable t) @@ -166,10 +190,10 @@ public class Console } else { - System.err.println(message); - t.printStackTrace(System.err); + jalview.bin.Console.errPrintln(message); + Console.printStackTrace(t); } - + } public static boolean isDebugEnabled() @@ -189,39 +213,70 @@ public class Console public static JLogger.LogLevel getCachedLogLevel(String key) { - return JLogger.toLevel(Cache.getDefault(key, "INFO")); + return getLogLevel(Cache.getDefault(key, "INFO")); + } + + public static JLogger.LogLevel getLogLevel(String level) + { + return JLogger.toLevel(level); + } + + public static JLogger getLogger() + { + return log; } public static boolean initLogger() { + return initLogger(null); + } + + public static boolean initLogger(String providedLogLevel) + { if (log != null) { return true; } try { - JLogger.LogLevel cachedLevel = getCachedLogLevel(); + JLogger.LogLevel logLevel = JLogger.LogLevel.INFO; + + if (JLogger.isLevel(providedLogLevel)) + { + logLevel = Console.getLogLevel(providedLogLevel); + } + else + { + logLevel = getCachedLogLevel(); + } + if (!Platform.isJS()) { - Log4j.init(cachedLevel); + if (!Jalview.quiet()) + { + jalview.bin.Console.errPrintln( + "Setting initial log level to " + logLevel.name()); + } + Log4j.init(logLevel); } // 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); - + JLoggerLog4j.getLogger("org.apache.axis", logLevel); + // The main application logger - log = JLoggerLog4j.getLogger(Cache.JALVIEW_LOGGER_NAME, cachedLevel); + log = JLoggerLog4j.getLogger(Cache.JALVIEW_LOGGER_NAME, logLevel); } catch (NoClassDefFoundError e) { - System.err.println("Could not initialise the logger framework"); - e.printStackTrace(); + jalview.bin.Console + .errPrintln("Could not initialise the logger framework"); + Console.printStackTrace(e); } - + // Test message if (log != null) { - // Logging test message should got through the logger object + // Logging test message should go through the logger object if (log.loggerExists()) log.debug(Console.LOGGING_TEST_MESSAGE); // Tell the user that debug is enabled @@ -235,6 +290,114 @@ public class Console } } + public static void setLogLevel(String logLevelString) + { + for (LogLevel logLevel : JLoggerI.LogLevel.values()) + { + if (logLevel.toString().toLowerCase(Locale.ROOT) + .equals(logLevelString.toLowerCase(Locale.ROOT))) + { + log.setLevel(logLevel); + if (!Platform.isJS()) + { + Log4j.init(logLevel); + } + JLoggerLog4j.getLogger("org.apache.axis", logLevel); + break; + } + } + } + + public static void outPrint() + { + outPrint(""); + } + + public static void outPrintln() + { + outPrintln(""); + } + + public static void outPrint(Object message) + { + outPrintMessage(message, false, false); + } + + public static void outPrint(Object message, boolean forceStdout) + { + outPrintMessage(message, false, forceStdout); + } + + public static void outPrintln(Object message) + { + outPrintMessage(message, true, false); + } + + public static PrintStream outputStream(boolean forceStdout) + { + // send message to stderr if an output file to stdout is expected + if (!forceStdout && Jalview.getInstance() != null + && Jalview.getInstance().getBootstrapArgs() != null + && Jalview.getInstance().getBootstrapArgs().outputToStdout()) + { + return System.err; + } + else + { + return System.out; + } + } + + public static void outPrintMessage(Object message, boolean newline, + boolean forceStdout) + { + PrintStream ps = outputStream(forceStdout); + if (newline) + { + ps.println(message); + } + else + { + ps.print(message); + } + } + + public static void errPrint() + { + errPrint(""); + } + + public static void errPrintln() + { + errPrintln(""); + } + + public static void errPrint(Object message) + { + System.err.print(message); + } + + public static void errPrintln(Object message) + { + System.err.println(message); + } + + public static void debugPrintStackTrace(Throwable t) + { + if (!isDebugEnabled()) + { + return; + } + // send message to stderr if output to stdout is expected + printStackTrace(t); + } + + public static void printStackTrace(Throwable t) + { + // send message to stderr if output to stdout is expected + t.printStackTrace(System.err); + } + public final static String LOGGING_TEST_MESSAGE = "Logging to STDERR"; -} +} \ No newline at end of file