/******************************************************************************* * This file is part of OpenNMS(R). * * Copyright (C) 2009-2011 The OpenNMS Group, Inc. * OpenNMS(R) is Copyright (C) 1999-2011 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * * OpenNMS(R) 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. * * OpenNMS(R) 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 OpenNMS(R). If not, see: * http://www.gnu.org/licenses/ * * For more information contact: * OpenNMS(R) Licensing <license@opennms.org> * http://www.opennms.org/ * http://www.opennms.com/ *******************************************************************************/ package org.opennms.core.utils; import java.util.Properties; import org.apache.log4j.PropertyConfigurator; import org.slf4j.Logger; /** * <p>LogUtils class.</p> * * @author ranger * @version $Id: $ */ public abstract class LogUtils { /** * <p>tracef</p> * * @param logee a {@link java.lang.Object} object. * @param format a {@link java.lang.String} object. * @param args a {@link java.lang.Object} object. */ public static void tracef(final Object logee, final String format, final Object... args) { tracef(logee, null, format, args); } /** * <p>tracef</p> * * @param logee a {@link java.lang.Object} object. * @param throwable a {@link java.lang.Throwable} object. * @param format a {@link java.lang.String} object. * @param args a {@link java.lang.Object} object. */ public static void tracef(final Object logee, final Throwable throwable, final String format, final Object... args) { Logger log = getLogger(logee); if (log.isTraceEnabled()) { String logMessage = ((args == null || args.length < 1) ? format : String.format(format, args)); if (throwable == null) { log.trace(logMessage); } else { log.trace(logMessage, throwable); } } } /** * <p>debugf</p> * * @param logee a {@link java.lang.Object} object. * @param format a {@link java.lang.String} object. * @param args a {@link java.lang.Object} object. */ public static void debugf(final Object logee, final String format, final Object... args) { debugf(logee, null, format, args); } /** * <p>debugf</p> * * @param logee a {@link java.lang.Object} object. * @param throwable a {@link java.lang.Throwable} object. * @param format a {@link java.lang.String} object. * @param args a {@link java.lang.Object} object. */ public static void debugf(final Object logee, final Throwable throwable, final String format, final Object... args) { Logger log = getLogger(logee); if (log.isDebugEnabled()) { String logMessage = ((args == null || args.length < 1) ? format : String.format(format, args)); if (throwable == null) { log.debug(logMessage); } else { log.debug(logMessage, throwable); } } } /** * <p>infof</p> * * @param logee a {@link java.lang.Object} object. * @param format a {@link java.lang.String} object. * @param args a {@link java.lang.Object} object. */ public static void infof(final Object logee, final String format, final Object... args) { infof(logee, null, format, args); } /** * <p>infof</p> * * @param logee a {@link java.lang.Object} object. * @param throwable a {@link java.lang.Throwable} object. * @param format a {@link java.lang.String} object. * @param args a {@link java.lang.Object} object. */ public static void infof(final Object logee, final Throwable throwable, final String format, final Object... args) { Logger log = getLogger(logee); if (log.isInfoEnabled()) { String logMessage = ((args == null || args.length < 1) ? format : String.format(format, args)); if (throwable == null) { log.info(logMessage); } else { log.info(logMessage, throwable); } } } /** * <p>warnf</p> * * @param logee a {@link java.lang.Object} object. * @param format a {@link java.lang.String} object. * @param args a {@link java.lang.Object} object. */ public static void warnf(final Object logee, final String format, final Object... args) { warnf(logee, null, format, args); } /** * <p>warnf</p> * * @param logee a {@link java.lang.Object} object. * @param throwable a {@link java.lang.Throwable} object. * @param format a {@link java.lang.String} object. * @param args a {@link java.lang.Object} object. */ public static void warnf(final Object logee, final Throwable throwable, final String format, final Object... args) { Logger log = getLogger(logee); if (log.isWarnEnabled()) { String logMessage = ((args == null || args.length < 1) ? format : String.format(format, args)); if (throwable == null) { log.warn(logMessage); } else { log.warn(logMessage, throwable); } } } /** * <p>errorf</p> * * @param logee a {@link java.lang.Object} object. * @param format a {@link java.lang.String} object. * @param args a {@link java.lang.Object} object. */ public static void errorf(final Object logee, final String format, final Object... args) { errorf(logee, null, format, args); } /** * <p>errorf</p> * * @param logee a {@link java.lang.Object} object. * @param throwable a {@link java.lang.Throwable} object. * @param format a {@link java.lang.String} object. * @param args a {@link java.lang.Object} object. */ public static void errorf(final Object logee, final Throwable throwable, final String format, final Object... args) { Logger log = getLogger(logee); if (log.isErrorEnabled()) { String logMessage = ((args == null || args.length < 1) ? format : String.format(format, args)); if (throwable == null) { log.error(logMessage); } else { log.error(logMessage, throwable); } } } /** * <p>fatalf</p> * * @deprecated SLF4J doesn't support fatal, so this just goes to {@link #errorf} anyways. * @param logee a {@link java.lang.Object} object. * @param format a {@link java.lang.String} object. * @param args a {@link java.lang.Object} object. */ public static void fatalf(final Object logee, final String format, final Object... args) { errorf(logee, null, format, args); } /** * <p>fatalf</p> * * @deprecated SLF4J doesn't support fatal, so this just goes to {@link #errorf} anyways. * @param logee a {@link java.lang.Object} object. * @param throwable a {@link java.lang.Throwable} object. * @param format a {@link java.lang.String} object. * @param args a {@link java.lang.Object} object. */ public static void fatalf(final Object logee, final Throwable throwable, final String format, final Object... args) { errorf(logee, throwable, format, args); } /** * <p>logToConsole</p> */ public static void logToConsole() { final Properties logConfig = new Properties(); logConfig.setProperty("log4j.reset", "true"); logConfig.setProperty("log4j.rootCategory", "INFO, CONSOLE"); logConfig.setProperty("log4j.appender.CONSOLE", "org.apache.log4j.ConsoleAppender"); logConfig.setProperty("log4j.appender.CONSOLE.layout", "org.apache.log4j.PatternLayout"); logConfig.setProperty("log4j.appender.CONSOLE.layout.ConversionPattern", "%d %-5p [%t] %c: %m%n"); PropertyConfigurator.configure(logConfig); } /** * <p>logToFile</p> * * @param file a {@link java.lang.String} object. */ public static void logToFile(final String file) { final Properties logConfig = new Properties(); logConfig.setProperty("log4j.reset", "true"); logConfig.setProperty("log4j.rootCategory", "INFO, FILE"); logConfig.setProperty("log4j.appender.FILE", "org.apache.log4j.RollingFileAppender"); logConfig.setProperty("log4j.appender.FILE.MaxFileSize", "100MB"); logConfig.setProperty("log4j.appender.FILE.MaxBackupIndex", "4"); logConfig.setProperty("log4j.appender.FILE.File", file); logConfig.setProperty("log4j.appender.FILE.layout", "org.apache.log4j.PatternLayout"); logConfig.setProperty("log4j.appender.FILE.layout.ConversionPattern", "%d %-5p [%t] %c: %m%n"); PropertyConfigurator.configure(logConfig); } /** * <p>enableDebugging</p> */ public static void enableDebugging() { org.apache.log4j.Logger.getRootLogger().setLevel(org.apache.log4j.Level.ALL); } public static boolean isTraceEnabled(final Object logee) { return getLogger(logee).isTraceEnabled(); } public static boolean isDebugEnabled(final Object logee) { return getLogger(logee).isDebugEnabled(); } private static Logger getLogger(final Object logee) { Logger log; if (logee instanceof Class<?>) { log = ThreadCategory.getSlf4jInstance((Class<?>)logee); } else if (logee instanceof String) { log = ThreadCategory.getSlf4jInstance((String)logee); } else { log = ThreadCategory.getSlf4jInstance(logee.getClass()); } return log; } }