package util.logger; import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.MemoryHandler; /** * Class that sets a memory handler to the logger and outputs a records * through a given handler after a defined level message is issued * * @author Henrique Moraes * */ public class HandlerMemory implements IVoogaHandler { private static final Level DEFAULT_PUSH_LEVEL = Level.SEVERE; private static final Level DEFAULT_HANDLER_LEVEL = Level.INFO; private static final int DEFAULT_LIMIT = 100; private static final String ERROR_MESSAGE = "Error in creating memory format handler"; private Level myPushLevel; private Level myHandlerLevel = DEFAULT_HANDLER_LEVEL; private int mySize; private IVoogaHandler myHandler; /** * Constructor * * @param handler the type of handler to have records pushed to * @param size Number of maximum records this handler will maintain * @param pushLevel push to handler as soon as a message of the given */ public HandlerMemory (IVoogaHandler hand, int size, Level pushLevel) { setProperties(hand, size, pushLevel); } /** * Constructor * Sets default size and push level */ public HandlerMemory () { myPushLevel = DEFAULT_PUSH_LEVEL; mySize = DEFAULT_LIMIT; } /** * * @param handler the type of handler to have records pushed to */ public void setHandler (IVoogaHandler hand) { myHandler = hand; } /** * * @param level level of the handler in which records are written to */ public void setHandlerLevel (Level level) { myHandlerLevel = level; } /** * * @param size Number of maximum records this handler will maintain */ public void setSize (int size) { mySize = size; } /** * * @param pushLevel push to handler as soon as a message of the given */ public void setPushLevel (Level pushLevel) { myPushLevel = pushLevel; } /** * * @param handler the type of handler to have records pushed to * @param size Number of maximum records this handler will maintain * @param pushLevel push to handler as soon as a message of the given */ public void setProperties (IVoogaHandler hand, int size, Level pushLevel) { setHandler(hand); setSize(size); setPushLevel(pushLevel); } @Override public Handler getHandler () { Handler memHandler = null; try { Handler handler = myHandler.getHandler(); handler.setLevel(myHandlerLevel); memHandler = new MemoryHandler(handler, mySize, myPushLevel); } catch (Exception e) { LoggerManager.DEFAULT_LOGGER.severe(ERROR_MESSAGE); } return memHandler; } }