/*-
* Copyright (c) 2014-2015 Red Hat, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.slf4j.impl;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import org.apache.ivy.core.IvyContext;
import org.apache.ivy.util.MessageLogger;
import org.slf4j.helpers.FormattingTuple;
import org.slf4j.helpers.MarkerIgnoringBase;
import org.slf4j.helpers.MessageFormatter;
/**
* @author Mikolaj Izdebski
*/
class IvyLoggerAdapter
extends MarkerIgnoringBase
{
private static final long serialVersionUID = 1L;
private final MessageLogger logger = IvyContext.getContext().getMessageLogger();
private String formatMessage( String message, Throwable exception )
{
if ( exception == null )
return message;
try (StringWriter stringWriter = new StringWriter())
{
stringWriter.write( message );
stringWriter.write( ": " );
try (PrintWriter printWriter = new PrintWriter( stringWriter ))
{
exception.printStackTrace( printWriter );
}
return stringWriter.toString();
}
catch ( IOException e )
{
throw new RuntimeException( e );
}
}
private String formatMessage( String format, Object arg1, Object arg2 )
{
FormattingTuple tuple = MessageFormatter.format( format, arg1, arg2 );
return formatMessage( tuple.getMessage(), tuple.getThrowable() );
}
private String formatMessage( String format, Object... arguments )
{
FormattingTuple tuple = MessageFormatter.arrayFormat( format, arguments );
return formatMessage( tuple.getMessage(), tuple.getThrowable() );
}
@Override
public boolean isErrorEnabled()
{
return true;
}
@Override
public void error( String message )
{
logger.error( message );
}
@Override
public void error( String message, Throwable exception )
{
logger.error( formatMessage( message, exception ) );
}
@Override
public void error( String format, Object arg )
{
logger.error( formatMessage( format, arg, null ) );
}
@Override
public void error( String format, Object arg1, Object arg2 )
{
logger.error( formatMessage( format, arg1, arg2 ) );
}
@Override
public void error( String format, Object... args )
{
logger.error( formatMessage( format, args ) );
}
@Override
public boolean isWarnEnabled()
{
return true;
}
@Override
public void warn( String message )
{
logger.warn( message );
}
@Override
public void warn( String message, Throwable exception )
{
logger.warn( formatMessage( message, exception ) );
}
@Override
public void warn( String format, Object arg )
{
logger.warn( formatMessage( format, arg, null ) );
}
@Override
public void warn( String format, Object arg1, Object arg2 )
{
logger.warn( formatMessage( format, arg1, arg2 ) );
}
@Override
public void warn( String format, Object... args )
{
logger.warn( formatMessage( format, args ) );
}
@Override
public boolean isInfoEnabled()
{
return true;
}
@Override
public void info( String message )
{
logger.info( message );
}
@Override
public void info( String message, Throwable exception )
{
logger.info( formatMessage( message, exception ) );
}
@Override
public void info( String format, Object arg )
{
logger.info( formatMessage( format, arg, null ) );
}
@Override
public void info( String format, Object arg1, Object arg2 )
{
logger.info( formatMessage( format, arg1, arg2 ) );
}
@Override
public void info( String format, Object... args )
{
logger.info( formatMessage( format, args ) );
}
@Override
public boolean isDebugEnabled()
{
return true;
}
@Override
public void debug( String message )
{
logger.verbose( message );
}
@Override
public void debug( String format, Object param1 )
{
logger.verbose( formatMessage( format, param1, null ) );
}
@Override
public void debug( String format, Object param1, Object param2 )
{
logger.verbose( formatMessage( format, param1, param2 ) );
}
@Override
public void debug( String format, Object... args )
{
logger.verbose( formatMessage( format, args ) );
}
@Override
public void debug( String message, Throwable exception )
{
logger.verbose( formatMessage( message, exception ) );
}
@Override
public boolean isTraceEnabled()
{
return true;
}
@Override
public void trace( String message )
{
logger.debug( message );
}
@Override
public void trace( String message, Throwable exception )
{
logger.debug( formatMessage( message, exception ) );
}
@Override
public void trace( String format, Object param1 )
{
logger.debug( formatMessage( format, param1, null ) );
}
@Override
public void trace( String format, Object param1, Object param2 )
{
logger.debug( formatMessage( format, param1, param2 ) );
}
@Override
public void trace( String format, Object... args )
{
logger.debug( formatMessage( format, args ) );
}
}