1 package com.github.triceo.splitlog.util; 2 3 import org.slf4j.Logger; 4 5 import com.github.triceo.splitlog.api.Message; 6 import com.github.triceo.splitlog.api.MessageDeliveryStatus; 7 import com.github.triceo.splitlog.api.MessageListener; 8 import com.github.triceo.splitlog.api.MessageProducer; 9 10 public class LogUtil { 11 12 public static enum Level { 13 DEBUG, ERROR, INFO, TRACE, WARNING; 14 } 15 16 private static final Object[] NOARGS = new Object[0]; 17 private static final String STATUS_TEMPLATE_NOPRODUCER = " {}\n\tMessage: {}\n\tWhere: {}"; 18 private static final String STATUS_TEMPLATE_PRODUCER = LogUtil.STATUS_TEMPLATE_NOPRODUCER + "\n\tFrom: {}"; 19 20 public static void newMessage(final Logger logger, final Level level, final String note, final Message msg, 21 final MessageDeliveryStatus status, final MessageProducer<?> producer, final MessageListener<?> consumer) { 22 LogUtil.newMessage(logger, level, note, msg, status, producer, consumer, LogUtil.NOARGS); 23 } 24 25 public static void newMessage(final Logger logger, final Level level, final String note, final Message msg, 26 final MessageDeliveryStatus status, final MessageProducer<?> producer, final MessageListener<?> consumer, 27 final Object... objects) { 28 final String result = note + LogUtil.STATUS_TEMPLATE_PRODUCER; 29 LogUtil.notify(logger, level, result, status, msg, consumer, producer, objects); 30 } 31 32 public static void notify(final Logger logger, final Level level, final String note, final Object... objects) { 33 switch (level) { 34 case DEBUG: 35 logger.debug(note, objects); 36 break; 37 case ERROR: 38 logger.error(note, objects); 39 break; 40 case INFO: 41 logger.info(note, objects); 42 break; 43 case TRACE: 44 logger.trace(note, objects); 45 break; 46 case WARNING: 47 logger.warn(note, objects); 48 break; 49 } 50 } 51 }