Package com.kokakiwi.mclauncher.utils

Source Code of com.kokakiwi.mclauncher.utils.MCLogger$LogFormatter

package com.kokakiwi.mclauncher.utils;

import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.ConsoleHandler;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;

public class MCLogger
{
    private final static Logger    global = Logger.getLogger("MCLauncher");
   
    public final static DebugLevel DEBUG  = new DebugLevel();
   
    public static void register()
    {
        register(new File(getLauncherDir(), "mclauncher.log"));
    }
   
    public static void register(String fileName)
    {
        register(new File(fileName + ".log"));
    }
   
    public static void register(File file)
    {
        try
        {
            // Setup Logger
            for (final Handler handler : global.getHandlers())
            {
                global.removeHandler(handler);
            }
           
            final ConsoleHandler console = new TerminalConsoleHandler();
            global.addHandler(console);
           
            final File logFile = file;
            final FileHandler fileHandler = new FileHandler(
                    logFile.getAbsolutePath(), 500000, 5, true);
            fileHandler.setFormatter(new LogFormatter(true));
            global.addHandler(fileHandler);
           
            System.setOut(new PrintStream(System.out) {
               
               
                public void print(String s)
                {
                    global.info(s);
                }
               
            });
           
            System.setErr(new PrintStream(System.err) {
               
               
                public void print(String s)
                {
                    global.severe(s);
                }
               
            });
        }
        catch (final IOException e)
        {
            e.printStackTrace();
        }
    }
   
    public static void debug(Object message)
    {
        global.log(DEBUG, message.toString());
    }
   
    public static File getLauncherDir()
    {
        File dir = null;
       
        File root = new File(System.getProperty("user.home", ".") + "/");
        final String appName = "mclauncher";
       
        switch (SystemUtils.getSystemOS())
        {
            case linux:
            case solaris:
                dir = new File(root, "." + appName + "/");
                break;
           
            case macosx:
                dir = new File(root, "Library/Application Support/" + appName);
                break;
           
            case windows:
                final String applicationData = System.getenv("APPDATA");
                if (applicationData != null)
                {
                    root = new File(applicationData);
                }
               
                dir = new File(root, '.' + appName + '/');
                break;
           
            default:
                dir = new File(root, appName + '/');
                break;
        }
       
        if (dir != null && !dir.exists() && !dir.mkdirs())
        {
            throw new RuntimeException(
                    "The working directory could not be created: " + dir);
        }
       
        return dir;
    }
   
    public static class DebugLevel extends Level
    {
        private static final long serialVersionUID = 4164250706426396472L;
       
        protected DebugLevel()
        {
            super("DEBUG", Level.INFO.intValue() + 53);
        }
       
    }
   
    public static class TerminalConsoleHandler extends ConsoleHandler
    {
        public TerminalConsoleHandler()
        {
            super();
            setOutputStream(System.out);
            setFormatter(new LogFormatter(false));
        }
    }
   
    public static class LogFormatter extends Formatter
    {
        private final static String LINE_DELIMITER = System.getProperty("line.separator");
       
        private final boolean       newLine;
       
        public LogFormatter(boolean newLine)
        {
            super();
            this.newLine = newLine;
        }
       
       
        public String format(LogRecord record)
        {
            final StringBuffer sb = new StringBuffer();
           
            sb.append(new SimpleDateFormat("HH:mm:ss").format(new Date(record
                    .getMillis())));
            sb.append(' ');
            sb.append('[');
            sb.append(record.getLevel().toString());
            sb.append("] ");
            sb.append(record.getMessage());
            if (newLine)
            {
                sb.append(LINE_DELIMITER);
            }
           
            return sb.toString();
        }
       
        public String render(CharSequence str)
        {
            String s = "";
           
            for (int i = str.length() - 2; i < str.length(); i++)
            {
                final char c = str.charAt(i);
                s += Character.getName(c);
            }
           
            return s;
        }
       
    }
}
TOP

Related Classes of com.kokakiwi.mclauncher.utils.MCLogger$LogFormatter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.