package org.jboss.seam.log;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import org.jboss.seam.core.Interpolator;
/**
* Implementation of the Log interface using commons logging.
*
* @author Gavin King
*/
class LogImpl implements Log, Externalizable
{
private static final long serialVersionUID = -1664298172030714342L;
private transient LogProvider log;
private String category;
public LogImpl() {} //for Externalizable
LogImpl(String category)
{
this.category = category;
this.log = Logging.getLogProvider(category, true);
}
public boolean isDebugEnabled()
{
return log.isDebugEnabled();
}
public boolean isErrorEnabled()
{
return log.isErrorEnabled();
}
public boolean isFatalEnabled()
{
return log.isFatalEnabled();
}
public boolean isInfoEnabled()
{
return log.isInfoEnabled();
}
public boolean isTraceEnabled()
{
return log.isTraceEnabled();
}
public boolean isWarnEnabled()
{
return log.isWarnEnabled();
}
public void trace(Object object, Object... params)
{
if ( isTraceEnabled() )
{
log.trace( interpolate(object, params) );
}
}
public void trace(Object object, Throwable t, Object... params)
{
if ( isTraceEnabled() )
{
log.trace( interpolate(object, params), t );
}
}
public void debug(Object object, Object... params)
{
if ( isDebugEnabled() )
{
log.debug( interpolate(object, params) );
}
}
public void debug(Object object, Throwable t, Object... params)
{
if ( isDebugEnabled() )
{
log.debug( interpolate(object, params), t );
}
}
public void info(Object object, Object... params)
{
if ( isInfoEnabled() )
{
log.info( interpolate(object, params) );
}
}
public void info(Object object, Throwable t, Object... params)
{
if ( isInfoEnabled() )
{
log.info( interpolate(object, params), t );
}
}
public void warn(Object object, Object... params)
{
if ( isWarnEnabled() )
{
log.warn( interpolate(object, params) );
}
}
public void warn(Object object, Throwable t, Object... params)
{
if ( isWarnEnabled() )
{
log.warn( interpolate(object, params), t );
}
}
public void error(Object object, Object... params)
{
if ( isErrorEnabled() )
{
log.error( interpolate(object, params) );
}
}
public void error(Object object, Throwable t, Object... params)
{
if ( isErrorEnabled() )
{
log.error( interpolate(object, params), t );
}
}
public void fatal(Object object, Object... params)
{
if ( isFatalEnabled() )
{
log.fatal( interpolate(object, params) );
}
}
public void fatal(Object object, Throwable t, Object... params)
{
if ( isFatalEnabled() )
{
log.fatal( interpolate(object, params), t );
}
}
@SuppressWarnings("finally")
private Object interpolate(Object object, Object... params)
{
if (object instanceof String)
{
try {
object = Interpolator.instance().interpolate( (String) object, params );
} catch (Exception e) {
log.error("exception interpolating string: " + object, e);
} finally {
return object;
}
}
else
{
return object;
}
}
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
{
category = (String) in.readObject();
log = Logging.getLogProvider(category, true);
}
public void writeExternal(ObjectOutput out) throws IOException
{
out.writeObject(category);
}
/*void readObject(ObjectInputStream ois)
throws ClassNotFoundException, IOException
{
ois.defaultReadObject();
log = LogFactory.getLog(category);
}*/
}