Java tutorial
/* * This file is part of LCMC * * Copyright (C) 2012, Rastislav Levrinc. * * LCMC 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. * * DRBD Management Console 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 drbd; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ package lcmc.logger; import java.util.HashMap; import java.util.Map; import org.apache.commons.collections15.Buffer; import org.apache.commons.collections15.BufferUtils; import org.apache.commons.collections15.buffer.CircularFifoBuffer; public final class LoggerFactory { private static final Map<String, Logger> LOGGER_MAP = new HashMap<String, Logger>(); private static int debugLevel = -1; private static boolean showAppWarning = false; /** Whether application errors should show a dialog. */ private static boolean showAppError = false; private static final int CIRCULAR_LOG_SIZE = 200; /** Synchronized, Circular log. */ static final Buffer<String> LOG_BUFFER = BufferUtils .synchronizedBuffer(new CircularFifoBuffer<String>(CIRCULAR_LOG_SIZE)); public static void incrementDebugLevel() { debugLevel++; System.out.println("debug level: " + debugLevel); } public static void decrementDebugLevel() { debugLevel--; System.out.println("debug level: " + debugLevel); } public static int getDebugLevel() { return debugLevel; } /** * @param level * debug level usually from 0 to 2. 0 means no debug output. */ public static void setDebugLevel(final int level) { debugLevel = level; } public static void setShowAppWarning(final boolean aw) { showAppWarning = aw; } public static void setShowAppError(final boolean ae) { showAppError = ae; } public static boolean getShowAppWarning() { return showAppWarning; } public static boolean getShowAppError() { return showAppError; } public static Logger getLogger(final Class<?> clazz) { Logger logger; final String name = clazz.getName(); synchronized (LoggerFactory.class) { logger = LOGGER_MAP.get(name); if (logger == null) { logger = new Logger(name); LOGGER_MAP.put(name, logger); } } return logger; } /** Return the whole log buffer. */ public static String getLogBuffer() { final StringBuilder lb = new StringBuilder(); synchronized (LOG_BUFFER) { for (final String l : LOG_BUFFER) { lb.append(l).append('\n'); } } return lb.toString(); } private LoggerFactory() { } }