/* * 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.log; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.Appender; import jalview.util.Log4j; import jalview.util.Platform; public class JLoggerLog4j extends JLogger implements JLoggerI { private Logger logger = null; public static JLoggerLog4j getLogger(Class c) { return getLogger(c); } public static JLoggerLog4j getLogger(Class c, LogLevel loglevel) { return getLogger(c.getCanonicalName(), loglevel); } public static JLoggerLog4j getLogger(String name) { return getLogger(name, LogLevel.INFO); } public static JLoggerLog4j getLogger(String name, LogLevel loglevel) { return registryContainsKey(name) ? (JLoggerLog4j) registryGet(name) : new JLoggerLog4j(name, loglevel); } private JLoggerLog4j(String name, LogLevel level) { this.name = name; this.level = level; this.loggerSetup(); this.registryStore(); } @Override protected void loggerSetup() { if (!Platform.isJS()) this.logger = Log4j.isInit() ? Log4j.getLogger(this.name, this.level) : null; } @Override public boolean loggerExists() { return logger != null; } @Override protected void loggerSetLevel(JLoggerI.LogLevel level) { if (loggerExists()) { Log4j.setLevel(logger, level); } } @Override protected void loggerLogMessage(LogLevel level, String message, Throwable t) { if (!loggerExists()) return; if (t != null) { switch (level) { case FATAL: logger.fatal(message, t); break; case ERROR: logger.error(message, t); break; case WARN: logger.warn(message, t); break; case INFO: logger.info(message, t); break; case DEBUG: logger.debug(message, t); break; case TRACE: logger.trace(message, t); break; case ALL: logger.trace(message, t); break; } } else { switch (level) { case FATAL: logger.fatal(message); break; case ERROR: logger.error(message); break; case WARN: logger.warn(message); break; case INFO: logger.info(message); break; case DEBUG: logger.debug(message); break; case TRACE: logger.trace(message); break; case ALL: logger.trace(message); break; } } } private Logger getLoggerObject() { return this.logger; } public synchronized static void addAppender(JLoggerLog4j level, Appender appender) { if (!Platform.isJS()) Log4j.addAppender(level.getLoggerObject(), appender); } public synchronized static void addAppender(JLoggerLog4j l1, JLoggerLog4j l2, String name) { if (!Platform.isJS()) Log4j.addAppender(l1.getLoggerObject(), l2.getLoggerObject(), name); } }