package biz.paluch.logging.gelf.wildfly; import static biz.paluch.logging.gelf.wildfly.WildFlyLogTestUtil.getWildFlyGelfLogHandler; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; import java.util.logging.Level; import java.util.logging.LogManager; import java.util.logging.Logger; import org.jboss.logmanager.MDC; import org.jboss.logmanager.NDC; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.function.Executable; import biz.paluch.logging.gelf.GelfTestSender; import biz.paluch.logging.gelf.LogMessageField; import biz.paluch.logging.gelf.intern.GelfMessage; import biz.paluch.logging.gelf.jboss7.JBoss7GelfLogHandler; /** * @author Mark Paluch * @since 11.08.14 08:36 */ public class WildFlyGelfLogHandlerTests { public static final String LOG_MESSAGE = "foo bar test log message"; public static final String EXPECTED_LOG_MESSAGE = LOG_MESSAGE; @BeforeEach public void before() throws Exception { GelfTestSender.getMessages().clear(); LogManager.getLogManager().reset(); MDC.remove("mdcField1"); } @Test public void testSimple() throws Exception { WildFlyGelfLogHandler handler = getWildFlyGelfLogHandler(); NDC.clear(); Logger logger = Logger.getLogger(getClass().getName()); logger.addHandler(handler); NDC.push("ndc message"); logger.info(LOG_MESSAGE); NDC.clear(); assertThat(GelfTestSender.getMessages()).hasSize(1); GelfMessage gelfMessage = GelfTestSender.getMessages().get(0); assertThat(gelfMessage.getVersion()).isEqualTo(GelfMessage.GELF_VERSION_1_1); assertThat(gelfMessage.getFullMessage()).isEqualTo(EXPECTED_LOG_MESSAGE); assertThat(gelfMessage.getShortMessage()).isEqualTo(EXPECTED_LOG_MESSAGE); assertThat(gelfMessage.getField("NDC")).isEqualTo("ndc message"); assertThat(gelfMessage.getField("MyTime")).isNotNull(); assertThat(gelfMessage.getLevel()).isEqualTo("6"); assertThat(gelfMessage.getMaximumMessageSize()).isEqualTo(8192); assertThat(gelfMessage.getField(LogMessageField.NamedLogField.SourceMethodName.name())).isEqualTo("testSimple"); assertThat(gelfMessage.getField(LogMessageField.NamedLogField.SourceClassName.name())).isEqualTo(getClass().getName()); } @Test public void testWarning() throws Exception { WildFlyGelfLogHandler handler = getWildFlyGelfLogHandler(); Logger logger = Logger.getLogger(getClass().getName()); logger.addHandler(handler); logger.warning(LOG_MESSAGE); assertThat(GelfTestSender.getMessages()).hasSize(1); GelfMessage gelfMessage = GelfTestSender.getMessages().get(0); assertThat(gelfMessage.getLevel()).isEqualTo("4"); } @Test public void testFine() throws Exception { WildFlyGelfLogHandler handler = getWildFlyGelfLogHandler(); handler.setLevel(Level.ALL); Logger logger = Logger.getLogger(getClass().getName()); logger.addHandler(handler); logger.setLevel(Level.ALL); logger.fine(LOG_MESSAGE); assertThat(GelfTestSender.getMessages().get(0).getLevel()).isEqualTo("7"); GelfTestSender.getMessages().clear(); logger.info(LOG_MESSAGE); assertThat(GelfTestSender.getMessages().get(0).getLevel()).isEqualTo("6"); GelfTestSender.getMessages().clear(); logger.warning(LOG_MESSAGE); assertThat(GelfTestSender.getMessages().get(0).getLevel()).isEqualTo("4"); GelfTestSender.getMessages().clear(); logger.severe(LOG_MESSAGE); assertThat(GelfTestSender.getMessages().get(0).getLevel()).isEqualTo("3"); GelfTestSender.getMessages().clear(); } @Test public void testSevere() throws Exception { WildFlyGelfLogHandler handler = getWildFlyGelfLogHandler(); NDC.clear(); Logger logger = Logger.getLogger(getClass().getName()); logger.addHandler(handler); NDC.push("ndc message"); logger.severe(LOG_MESSAGE); NDC.clear(); assertThat(GelfTestSender.getMessages()).hasSize(1); GelfMessage gelfMessage = GelfTestSender.getMessages().get(0); assertThat(gelfMessage.getLevel()).isEqualTo("3"); } @Test public void testEmptyMessage() throws Exception { WildFlyGelfLogHandler handler = getWildFlyGelfLogHandler(); Logger logger = Logger.getLogger(getClass().getName()); logger.addHandler(handler); logger.info(""); assertThat(GelfTestSender.getMessages()).isEmpty(); } @Test public void testSimpleWithMsgFormatSubstitution() throws Exception { WildFlyGelfLogHandler handler = getWildFlyGelfLogHandler(); Logger logger = Logger.getLogger(getClass().getName()); logger.addHandler(handler); String logMessage = "foo bar test log message {0}"; String expectedMessage = "foo bar test log message aaa"; logger.log(Level.INFO, logMessage, new String[] { "aaa" }); assertThat(GelfTestSender.getMessages()).hasSize(1); GelfMessage gelfMessage = GelfTestSender.getMessages().get(0); assertThat(gelfMessage.getFullMessage()).isEqualTo(expectedMessage); assertThat(gelfMessage.getShortMessage()).isEqualTo(expectedMessage); assertThat(gelfMessage.getLevel()).isEqualTo("6"); assertThat(gelfMessage.getMaximumMessageSize()).isEqualTo(8192); } @Test public void testSimpleWithStringFormatSubstitution() throws Exception { WildFlyGelfLogHandler handler = getWildFlyGelfLogHandler(); Logger logger = Logger.getLogger(getClass().getName()); logger.addHandler(handler); String logMessage = "foo bar test log message %s"; String expectedMessage = "foo bar test log message aaa"; logger.log(Level.INFO, logMessage, new String[] { "aaa" }); assertThat(GelfTestSender.getMessages()).hasSize(1); GelfMessage gelfMessage = GelfTestSender.getMessages().get(0); assertThat(gelfMessage.getFullMessage()).isEqualTo(expectedMessage); assertThat(gelfMessage.getShortMessage()).isEqualTo(expectedMessage); } @Test public void testFields() throws Exception { WildFlyGelfLogHandler handler = getWildFlyGelfLogHandler(); Logger logger = Logger.getLogger(getClass().getName()); logger.addHandler(handler); MDC.put("mdcField1", "a value"); logger.info(LOG_MESSAGE); assertThat(GelfTestSender.getMessages()).hasSize(1); GelfMessage gelfMessage = GelfTestSender.getMessages().get(0); assertThat(gelfMessage.getField("fieldName1")).isEqualTo("fieldValue1"); assertThat(gelfMessage.getField("fieldName2")).isEqualTo("fieldValue2"); assertThat(gelfMessage.getField("mdcField1")).isEqualTo("a value"); assertThat(gelfMessage.getField("mdcField2")).isNull(); } @Test public void testWrongConfig() throws Exception { assertThrows(IllegalArgumentException.class, new Executable() { @Override public void execute() throws Throwable { JBoss7GelfLogHandler handler = new JBoss7GelfLogHandler(); handler.setGraylogHost(null); handler.setGraylogPort(0); } }); } }