package biz.paluch.logging.gelf.jboss7; import static biz.paluch.logging.gelf.jboss7.JBoss7LogTestUtil.getJBoss7GelfLogHandler; import static org.assertj.core.api.Assertions.assertThat; import java.util.logging.LogManager; import java.util.logging.Logger; import org.jboss.logmanager.MDC; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import biz.paluch.logging.gelf.GelfTestSender; import biz.paluch.logging.gelf.intern.GelfMessage; /** * @author Mark Paluch * @since 27.09.13 08:36 */ public class JBoss7GelfLogHandlerDynamicMdcTests { public static final String LOG_MESSAGE = "foo bar test log message"; public static final String MY_MDC_WITH_SUFFIX1 = "myMdc-with-suffix1"; public static final String MY_MDC_WITH_SUFFIX2 = "myMdc-with-suffix2"; public static final String MDC_SOME_FIELD = "someField"; public static final String MDC_SOME_OTHER_FIELD = "someOtherField"; public static final String VALUE_1 = "value1"; public static final String VALUE_2 = "value2"; public static final String VALUE_3 = "value3"; public static final String MDC_MY_MDC = "myMdc"; @BeforeEach public void before() throws Exception { GelfTestSender.getMessages().clear(); LogManager.getLogManager().reset(); MDC.clear(); } @Test public void testWithoutFields() throws Exception { JBoss7GelfLogHandler handler = getLogHandler(); Logger logger = Logger.getLogger(getClass().getName()); logger.addHandler(handler); logger.info(LOG_MESSAGE); assertThat(GelfTestSender.getMessages()).hasSize(1); GelfMessage gelfMessage = GelfTestSender.getMessages().get(0); String myMdc = gelfMessage.getField(MDC_MY_MDC); assertThat(myMdc).isNull(); } @Test public void testWithMdcPrefix() throws Exception { JBoss7GelfLogHandler handler = getLogHandler(); Logger logger = Logger.getLogger(getClass().getName()); logger.addHandler(handler); MDC.put(MDC_MY_MDC, VALUE_1); MDC.put(MY_MDC_WITH_SUFFIX1, VALUE_2); MDC.put(MY_MDC_WITH_SUFFIX2, VALUE_3); logger.info(LOG_MESSAGE); assertThat(GelfTestSender.getMessages()).hasSize(1); GelfMessage gelfMessage = GelfTestSender.getMessages().get(0); assertThat(gelfMessage.getField(MDC_MY_MDC)).isEqualTo(VALUE_1); assertThat(gelfMessage.getField(MY_MDC_WITH_SUFFIX1)).isEqualTo(VALUE_2); assertThat(gelfMessage.getField(MY_MDC_WITH_SUFFIX2)).isEqualTo(VALUE_3); } @Test public void testWithMdcRegex() throws Exception { JBoss7GelfLogHandler handler = getLogHandler(); Logger logger = Logger.getLogger(getClass().getName()); logger.addHandler(handler); MDC.put(MDC_SOME_FIELD, "included"); MDC.put(MDC_SOME_OTHER_FIELD, "excluded"); logger.info(LOG_MESSAGE); assertThat(GelfTestSender.getMessages()).hasSize(1); GelfMessage gelfMessage = GelfTestSender.getMessages().get(0); assertThat(gelfMessage.getField(MDC_SOME_FIELD)).isEqualTo("included"); assertThat(gelfMessage.getField("someOtherField")).isNull(); } @Test public void testWithDifferentMDCsPrefix() throws Exception { JBoss7GelfLogHandler handler = getLogHandler(); Logger logger = Logger.getLogger(getClass().getName()); logger.addHandler(handler); MDC.put(MDC_MY_MDC, VALUE_1); MDC.put(MY_MDC_WITH_SUFFIX1, VALUE_2); MDC.put(MY_MDC_WITH_SUFFIX2, VALUE_3); logger.info(LOG_MESSAGE); assertThat(GelfTestSender.getMessages()).hasSize(1); GelfMessage gelfMessage = GelfTestSender.getMessages().get(0); assertThat(gelfMessage.getField(MDC_MY_MDC)).isEqualTo(VALUE_1); assertThat(gelfMessage.getField(MY_MDC_WITH_SUFFIX1)).isEqualTo(VALUE_2); assertThat(gelfMessage.getField(MY_MDC_WITH_SUFFIX2)).isEqualTo(VALUE_3); } private JBoss7GelfLogHandler getLogHandler() { JBoss7GelfLogHandler handler = getJBoss7GelfLogHandler(); handler.setDynamicMdcFields("myMdc.*,[a-z]+Field"); return handler; } }