*/
package jalview.bin;
+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;
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 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.getInstance().quiet())
+ {
+ System.err.println(
+ "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");
// 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
}
}
+ 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 final static String LOGGING_TEST_MESSAGE = "Logging to STDERR";
}