/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package se.nicklasgavelin.log;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
/**
* Log appender for Log4j
*
* @author Nicklas Gavelin, nicklas.gavelin@gmail.com, LuleƄ University of Technology
*/
public class Log4JLogger implements Logging.Appender
{
private static final String FROM = Logging.class.getName();
private Logger logger;
/*
* (non-Javadoc)
*
* @see com.intel.bluetooth.DebugLog.LoggerAppender#appendLog(int, java.lang.String,
* java.lang.Throwable)
*/
protected Log4JLogger()
{
logger = Logger.getLogger( Logging.class.getCanonicalName() );
logger.addAppender( new ConsoleAppender( new PatternLayout( "[ %C ][ %d ][ %p ] %m\n" ) ) );
}
/**
* Log a message
*
* @param l The log level
* @param message The log message
* @param t Throwable object to log
*/
@Override
public void log( Logging.Level l, String message, Throwable t )
{
switch ( l )
{
case DEBUG:
this.logger.log( FROM, Level.DEBUG, message, t );
break;
case ERROR:
this.logger.log( FROM, Level.ERROR, message, t );
break;
case INFO:
this.logger.log( FROM, Level.INFO, message, t );
break;
case WARN:
this.logger.log( FROM, Level.WARN, message, t );
break;
}
}
/**
* Returns the current log status
*
* @param level The level to check for
* @return True if enabled for the given level, false otherwise
*/
@Override
public boolean isLogEnabled( Logging.Level level )
{
switch ( level )
{
case DEBUG:
return this.logger.isDebugEnabled();
case ERROR:
return this.logger.isEnabledFor( Level.ERROR );
case INFO:
return this.logger.isEnabledFor( Level.INFO );
case WARN:
return this.logger.isEnabledFor( Level.WARN );
default:
return false;
}
}
}