All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.md_5.bungee.log.ConciseFormatter Maven / Gradle / Ivy

package net.md_5.bungee.log;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import lombok.RequiredArgsConstructor;
import net.md_5.bungee.api.ChatColor;

@RequiredArgsConstructor
public class ConciseFormatter extends Formatter
{

    private final DateFormat date = new SimpleDateFormat( System.getProperty( "net.md_5.bungee.log-date-format", "HH:mm:ss" ) );
    private final boolean coloured;

    @Override
    @SuppressWarnings("ThrowableResultIgnored")
    public String format(LogRecord record)
    {
        StringBuilder formatted = new StringBuilder();

        formatted.append( date.format( record.getMillis() ) );
        formatted.append( " [" );
        appendLevel( formatted, record.getLevel() );
        formatted.append( "] " );
        formatted.append( formatMessage( record ) );
        formatted.append( '\n' );

        if ( record.getThrown() != null )
        {
            StringWriter writer = new StringWriter();
            record.getThrown().printStackTrace( new PrintWriter( writer ) );
            formatted.append( writer );
        }

        return formatted.toString();
    }

    private void appendLevel(StringBuilder builder, Level level)
    {
        if ( !coloured )
        {
            builder.append( level.getLocalizedName() );
            return;
        }

        ChatColor color;

        if ( level == Level.INFO )
        {
            color = ChatColor.BLUE;
        } else if ( level == Level.WARNING )
        {
            color = ChatColor.YELLOW;
        } else if ( level == Level.SEVERE )
        {
            color = ChatColor.RED;
        } else
        {
            color = ChatColor.AQUA;
        }

        builder.append( color ).append( level.getLocalizedName() ).append( ChatColor.RESET );
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy