package biz.paluch.logging.gelf.log4j2; import static org.assertj.core.api.Assertions.assertThat; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.MarkerManager; import org.apache.logging.log4j.ThreadContext; import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import biz.paluch.logging.gelf.GelfTestSender; import biz.paluch.logging.gelf.LogMessageField; import biz.paluch.logging.gelf.intern.GelfMessage; /** * @author Mark Paluch */ public class GelfLogAppenderMinimalTests { public static final String LOG_MESSAGE = "foo bar test log message"; public static final String EXPECTED_LOG_MESSAGE = LOG_MESSAGE; private static LoggerContext loggerContext; @BeforeAll public static void beforeClass() { System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY, "log4j2/log4j2-minimal.xml"); loggerContext = (LoggerContext) LogManager.getContext(false); loggerContext.reconfigure(); } @AfterAll public static void afterClass() throws Exception { System.clearProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY); loggerContext.reconfigure(); } @BeforeEach public void before() throws Exception { GelfTestSender.getMessages().clear(); ThreadContext.clearAll(); } @Test public void testSimpleDebug() throws Exception { Logger logger = loggerContext.getLogger(getClass().getName()); assertThat(GelfTestSender.getMessages()).isEmpty(); logger.debug(LOG_MESSAGE); assertThat(GelfTestSender.getMessages()).isEmpty(); } @Test public void testSimpleInfo() throws Exception { Logger logger = loggerContext.getLogger(getClass().getName()); logger.info(new MarkerManager.Log4jMarker("test"), LOG_MESSAGE); assertThat(GelfTestSender.getMessages()).hasSize(1); GelfMessage gelfMessage = GelfTestSender.getMessages().get(0); assertThat(gelfMessage.getFullMessage()).isEqualTo(EXPECTED_LOG_MESSAGE); assertThat(gelfMessage.getShortMessage()).isEqualTo(EXPECTED_LOG_MESSAGE); assertThat(gelfMessage.getField("MyTime")).isNotNull(); assertThat(gelfMessage.getAdditonalFields().get("Marker")).isEqualTo("test"); assertThat(gelfMessage.getLevel()).isEqualTo("6"); assertThat(gelfMessage.getField(LogMessageField.NamedLogField.SourceLineNumber.name())).isNotNull(); assertThat(gelfMessage.getField(LogMessageField.NamedLogField.SourceMethodName.name())).isEqualTo("testSimpleInfo"); assertThat(gelfMessage.getField(LogMessageField.NamedLogField.SourceClassName.name())).isEqualTo(getClass().getName()); } }