org.ebayopensource.turmeric.runtime.tests.common.jetty.SimpleConsoleHandler.java Source code

Java tutorial

Introduction

Here is the source code for org.ebayopensource.turmeric.runtime.tests.common.jetty.SimpleConsoleHandler.java

Source

/*******************************************************************************
 * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved.
 * 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
 *******************************************************************************/
package org.ebayopensource.turmeric.runtime.tests.common.jetty;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.logging.ConsoleHandler;
import java.util.logging.Handler;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;
import java.util.logging.Logger;

import org.apache.commons.io.IOUtils;

public class SimpleConsoleHandler extends Handler {
    public static class Init {
        public Init() {
            URL url = this.getClass().getResource("test-logging.properties");
            if (url == null) {
                configureDefaults();
            } else {
                // Configurable Setup
                InputStream in = null;
                try {
                    in = url.openStream();
                    LogManager.getLogManager().readConfiguration(in);
                } catch (IOException e) {
                    e.printStackTrace(System.err);
                    configureDefaults();
                } finally {
                    IOUtils.closeQuietly(in);
                }
            }
        }

        public void configureDefaults() {
            // Default Setup
            Logger root = Logger.getLogger("");

            boolean ourHandlerExists = false;
            Handler handlers[] = root.getHandlers();
            for (Handler handler : handlers) {
                if (handler instanceof SimpleConsoleHandler) {
                    ourHandlerExists = true;
                    continue;
                }
                if (handler instanceof ConsoleHandler) {
                    System.out.println("Removing default logging handler: " + handler);
                    root.removeHandler(handler);
                    continue;
                }

                System.out.println("Other handler present: " + handler);
            }

            if (!ourHandlerExists) {
                SimpleConsoleHandler logger = new SimpleConsoleHandler();
                System.out.println("Adding our logging handler: " + logger);
                root.addHandler(logger);
            }
        }
    }

    public static void init() {
        System.setProperty("java.util.logging.config.class", SimpleConsoleHandler.Init.class.getName());
    }

    @Override
    public void close() throws SecurityException {
        /* nothing to do here */
    }

    @Override
    public void flush() {
        /* nothing to do here */
    }

    @Override
    public void publish(LogRecord record) {
        StringBuilder buf = new StringBuilder();
        buf.append("[").append(record.getLevel().getName());
        buf.append("] ").append(record.getLoggerName());
        buf.append(" (").append(record.getSourceMethodName());
        buf.append("): ").append(record.getMessage());

        System.out.println(buf.toString());
        if (record.getThrown() != null) {
            record.getThrown().printStackTrace(System.out);
        }
    }

}