/******************************************************************************* * 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.logging; 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); } } }