package org.yajul.juli;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;
/**
* Helper methods for JULI.
* <br>
* User: josh
* Date: 12/28/12
* Time: 3:12 PM
*/
public class LogHelper {
/**
* Logs an unexpected exception as at 'SEVERE' level.
* @param logger JULI logger
* @param t the exception.
*/
public static void unexpected(Logger logger, Throwable t) {
logger.log(Level.SEVERE, "Unexpected: " + t, t);
}
/**
* Removes all handlers from the given logger and returns them.
* @param logger the logger
* @return all of the handlers from the given logger
*/
public static Handler[] grabAllHandlers(Logger logger) {
Handler[] handlers = logger.getHandlers();
for (Handler handler : handlers) {
logger.removeHandler(handler);
}
return handlers;
}
/**
* Adds all of the handlers to the logger. Can be used to undo what is done
* with grabAllHandlers().
* @param logger the logger
* @param handlers the handlers
*/
public static void addAllHandlers(Logger logger,Handler[] handlers) {
for (Handler handler : handlers) {
logger.addHandler(handler);
}
}
/**
* Configures JULI from the specified resource.
* @param resourceName the resource name
* @throws IOException if something goes wrong
*/
public static void configureFromResource(String resourceName) throws IOException {
// Note: We don't use ResourceUtil here because that would cause a circular dependency.
ClassLoader cl = Thread.currentThread().getContextClassLoader();
InputStream stream = cl.getResourceAsStream(resourceName);
LogManager.getLogManager().readConfiguration(stream);
}
}