/*!
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* 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 Lesser General Public License for more details.
*
* Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved.
*/
package org.pentaho.platform.util.logging;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.pentaho.platform.api.engine.ILogger;
import org.pentaho.platform.api.util.IVersionHelper;
import org.pentaho.platform.util.messages.Messages;
import java.util.ArrayList;
import java.util.List;
public class Logger {
private static final ThreadLocal<List<Throwable>> threadExceptions = new ThreadLocal<List<Throwable>>();
private static IVersionHelper versionHelper = null;
private static int logLevel = ILogger.ERROR;
private static final String MISC_LOG = "misc-"; //$NON-NLS-1$
private static Log logger;
private static final String logName = "org.pentaho.platform.util.logging.Logger"; //$NON-NLS-1$
static {
Logger.logger = LogFactory.getLog( Logger.logName );
}
public static void addException( final Throwable t ) {
List<Throwable> list = Logger.threadExceptions.get();
if ( list == null ) {
list = new ArrayList<Throwable>();
Logger.threadExceptions.set( list );
}
list.add( t );
}
public static List<Throwable> getExceptions() {
return Logger.threadExceptions.get();
}
public static synchronized void setVersionHelper( final IVersionHelper helper ) {
Logger.versionHelper = helper;
}
public static String getLogLevelName( final int localLogLevel ) {
switch ( localLogLevel ) {
case ILogger.TRACE:
return "TRACE"; //$NON-NLS-1$
case ILogger.DEBUG:
return "DEBUG"; //$NON-NLS-1$
case ILogger.INFO:
return "INFO"; //$NON-NLS-1$
case ILogger.WARN:
return "WARN"; //$NON-NLS-1$
case ILogger.ERROR:
return "ERROR"; //$NON-NLS-1$
case ILogger.FATAL:
return "FATAL"; //$NON-NLS-1$
default:
return Messages.getInstance().getString( "Logger.CODE_LOG_UNKNOWN" ); //$NON-NLS-1$
}
}
public static int getLogLevel( final String localLogLevel ) {
if ( "TRACE".equalsIgnoreCase( localLogLevel ) ) { //$NON-NLS-1$
return ILogger.TRACE;
}
if ( "DEBUG".equalsIgnoreCase( localLogLevel ) ) { //$NON-NLS-1$
return ILogger.DEBUG;
}
if ( "INFO".equalsIgnoreCase( localLogLevel ) ) { //$NON-NLS-1$
return ILogger.INFO;
}
if ( "WARN".equalsIgnoreCase( localLogLevel ) ) { //$NON-NLS-1$
return ILogger.WARN;
}
if ( "ERROR".equalsIgnoreCase( localLogLevel ) ) { //$NON-NLS-1$
return ILogger.ERROR;
}
if ( "FATAL".equalsIgnoreCase( localLogLevel ) ) { //$NON-NLS-1$
return ILogger.FATAL;
}
return ILogger.ERROR;
}
public static int getLogLevel() {
return Logger.logLevel;
}
public static void setLogLevel( final int newLogLevel ) {
Logger.logLevel = newLogLevel;
}
public static void trace( final Object caller, final String message ) {
String id =
( caller == null )
? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller.getClass().getName(); //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.TRACE ) {
Logger.logger.trace( Logger.MISC_LOG + id + ": " + message ); //$NON-NLS-1$
}
}
public static void debug( final Object caller, final String message ) {
String id =
( caller == null )
? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller.getClass().getName(); //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.DEBUG ) {
Logger.logger.debug( Logger.MISC_LOG + id + ": " + message ); //$NON-NLS-1$
}
}
public static void info( final Object caller, final String message ) {
String id =
( caller == null )
? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller.getClass().getName(); //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.INFO ) {
Logger.logger.info( Logger.MISC_LOG + id + ": " + message ); //$NON-NLS-1$
}
}
public static void warn( final Object caller, final String message ) {
String id =
( caller == null )
? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller.getClass().getName(); //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.WARN ) {
Logger.logger.warn( Logger.MISC_LOG + id + ": " + message ); //$NON-NLS-1$
}
}
public static void error( final Object caller, final String message ) {
String id =
( caller == null )
? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller.getClass().getName(); //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.ERROR ) {
Logger.logger.error( Logger.MISC_LOG + id + ": " + message ); //$NON-NLS-1$
}
}
public static void fatal( final Object caller, final String message ) {
String id =
( caller == null )
? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller.getClass().getName(); //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.FATAL ) {
Logger.logger.fatal( Logger.MISC_LOG + id + ": " + message ); //$NON-NLS-1$
}
}
public static void trace( final Object caller, final String message, final Throwable error ) {
String id =
( caller == null )
? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller.getClass().getName(); //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.TRACE ) {
Logger.logger.trace( Logger.MISC_LOG + id + ": " + message, error ); //$NON-NLS-1$
}
Logger.addException( error );
}
public static void debug( final Object caller, final String message, final Throwable error ) {
String id =
( caller == null )
? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller.getClass().getName(); //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.DEBUG ) {
Logger.logger.debug( Logger.MISC_LOG + id + ": " + message, error ); //$NON-NLS-1$
}
Logger.addException( error );
}
public static void info( final Object caller, final String message, final Throwable error ) {
String id =
( caller == null )
? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller.getClass().getName(); //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.INFO ) {
Logger.logger.info( Logger.MISC_LOG + id + ": " + message, error ); //$NON-NLS-1$
}
Logger.addException( error );
}
public static void warn( final Object caller, final String message, final Throwable error ) {
String id =
( caller == null )
? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller.getClass().getName(); //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.WARN ) {
Logger.logger.warn( Logger.MISC_LOG + id + ": " + message, error ); //$NON-NLS-1$
}
Logger.addException( error );
}
public static void error( final Object caller, final String message, final Throwable error ) {
String id =
( caller == null )
? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller.getClass().getName(); //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.ERROR ) {
Logger.logger.error( Logger.MISC_LOG + id + ": " + message, error ); //$NON-NLS-1$
}
Logger.addException( error );
}
public static void fatal( final Object caller, final String message, final Throwable error ) {
String id =
( caller == null )
? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller.getClass().getName(); //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.FATAL ) {
Logger.logger.fatal( Logger.MISC_LOG + id + ": " + message, error ); //$NON-NLS-1$
}
Logger.addException( error );
}
public static void debug( final String caller, final String message ) {
String id = ( caller == null ) ? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller; //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.DEBUG ) {
Logger.logger.debug( Logger.MISC_LOG + id + ": " + message ); //$NON-NLS-1$
}
}
public static void info( final String caller, final String message ) {
String id = ( caller == null ) ? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller; //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.INFO ) {
Logger.logger.info( Logger.MISC_LOG + id + ": " + message ); //$NON-NLS-1$
}
}
public static void warn( final String caller, final String message ) {
String id = ( caller == null ) ? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller; //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.WARN ) {
Logger.logger.warn( Logger.MISC_LOG + id + ": " + message ); //$NON-NLS-1$
}
}
public static void error( final String caller, final String message ) {
String id = ( caller == null ) ? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller; //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.ERROR ) {
Logger.logger.error( Logger.MISC_LOG + id + ": " + message ); //$NON-NLS-1$
}
}
public static void fatal( final String caller, final String message ) {
String id = ( caller == null ) ? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller; //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.FATAL ) {
Logger.logger.fatal( Logger.MISC_LOG + id + ": " + message ); //$NON-NLS-1$
}
}
public static void debug( final String caller, final String message, final Throwable error ) {
String id = ( caller == null ) ? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller; //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.DEBUG ) {
Logger.logger.debug( Logger.MISC_LOG + id + ": " + message, error ); //$NON-NLS-1$
Logger.addException( error );
}
}
public static void info( final String caller, final String message, final Throwable error ) {
String id = ( caller == null ) ? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller; //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.INFO ) {
Logger.logger.info( Logger.MISC_LOG + id + ": " + message, error ); //$NON-NLS-1$
Logger.addException( error );
}
}
public static void warn( final String caller, final String message, final Throwable error ) {
String id = ( caller == null ) ? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller; //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.WARN ) {
Logger.logger.warn( Logger.MISC_LOG + id + ": " + message, error ); //$NON-NLS-1$
Logger.addException( error );
}
}
public static void error( final String caller, final String message, final Throwable error ) {
String id = ( caller == null ) ? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller; //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.ERROR ) {
if ( Logger.versionHelper != null ) {
Logger.logger.error( "Error: Pentaho " + Logger.versionHelper.getVersionInformation( Logger.class ) ); //$NON-NLS-1$
} else {
Logger.logger.error( "Error: Pentaho" ); //$NON-NLS-1$
}
Logger.logger.error( Logger.MISC_LOG + id + ": " + message, error ); //$NON-NLS-1$
Logger.logger.error( "Error end:" ); //$NON-NLS-1$
Logger.addException( error );
}
}
public static void fatal( final String caller, final String message, final Throwable error ) {
String id = ( caller == null ) ? Messages.getInstance().getString( "Logger.DEBUG_LOG_UNKNOWN" ) : caller; //$NON-NLS-1$
if ( Logger.logLevel <= ILogger.FATAL ) {
if ( Logger.versionHelper != null ) {
Logger.logger.error( "Error: Pentaho " + Logger.versionHelper.getVersionInformation( Logger.class ) ); //$NON-NLS-1$
} else {
Logger.logger.error( "Error: Pentaho" ); //$NON-NLS-1$
}
Logger.logger.fatal( Logger.MISC_LOG + id + ": " + message, error ); //$NON-NLS-1$
Logger.logger.error( "Error end:" ); //$NON-NLS-1$
Logger.addException( error );
}
}
}