Mercurial > 510Connectbot
view src/org/tn5250j/tools/logging/TN5250jLogFactory.java @ 7:3248b46f3973 tn5250
adding tn5250 files
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Thu, 22 May 2014 13:41:05 -0700 |
parents | cbdff98c45ea |
children | 5949eb469a79 |
line wrap: on
line source
/* * @(#)TN5250jLogFactory.java * @author Kenneth J. Pouncey * * Copyright: Copyright (c) 2001, 2002, 2003 * * This program 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 2, or (at your option) * any later version. * * This program 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 this software; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, MA 02111-1307 USA * */ package org.tn5250j.tools.logging; import java.util.*; import org.tn5250j.tools.logging.TN5250jLogger; import org.tn5250j.interfaces.ConfigureFactory; /** * An interface defining objects that can create Configure * instances. * * The model for the HashMap implementation of loggers came from the POI project * thanks to Nicola Ken Barozzi (nicolaken at apache.org) for the reference. * */ public final class TN5250jLogFactory { // map of TN5250jLogger instances, with classes as keys private static Map<String, TN5250jLogger> _loggers = new HashMap<String, TN5250jLogger>(); private static boolean log4j; private static String customLogger; private static int level = TN5250jLogger.INFO; /** * Here we try to do a little more work up front. */ static { try { Properties props = ConfigureFactory.getInstance().getProperties( ConfigureFactory.SESSIONS); level = Integer.parseInt(props.getProperty("emul.logLevel", Integer.toString(TN5250jLogger.INFO))); String customLogger = System.getProperty(TN5250jLogFactory.class.getName()); if (customLogger == null) { try { Class.forName("org.apache.log4j.Logger"); log4j = true; } catch (Exception ignore) { ; } } } catch (Exception ignore) { ; } } /** * Set package access only so we have to use getLogger() to return a logger object. */ TN5250jLogFactory() { } /** * @return An instance of the TN5250jLogger. */ public static TN5250jLogger getLogger (Class<?> clazz) { return getLogger(clazz.getName()); } /** * @return An instance of the TN5250jLogger. */ public static TN5250jLogger getLogger (String clazzName) { TN5250jLogger logger = null; if (_loggers.containsKey(clazzName)) { logger = _loggers.get(clazzName); } else { if (customLogger != null) { try { Class<?> classObject = Class.forName(customLogger); Object object = classObject.newInstance(); if (object instanceof TN5250jLogger) { logger = (TN5250jLogger) object; } } catch (Exception ex) { ; } } else { if (log4j) { logger = new Log4jLogger(); } else { // take the default logger. logger = new ConsoleLogger(); } logger.initialize(clazzName); logger.setLevel(level); _loggers.put(clazzName, logger); } } return logger; } public static boolean isLog4j() { return log4j; } public static void setLogLevels(int newLevel) { if (level != newLevel) { level = newLevel; TN5250jLogger logger = null; Set<String> loggerSet = _loggers.keySet(); Iterator<String> loggerIterator = loggerSet.iterator(); while (loggerIterator.hasNext()) { logger = _loggers.get(loggerIterator.next()); logger.setLevel(newLevel); } } } }