package biz.paluch.logging.gelf.log4j;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assumptions.assumeTrue;
import java.util.HashSet;
import java.util.Set;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.MDC;
import org.apache.log4j.PropertyConfigurator;
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 16.07.14 17:30
*/
public class GelfLogAppenderPropertiesIncludeFullMdcTest {
public static final String LOG_MESSAGE = "foo bar test log message";
public static final String MDC_MY_MDC1 = "aMdcValue";
public static final String MDC_MY_MDC2 = "differentMdc";
public static final String VALUE_1 = "value1";
public static final String VALUE_2 = "value2";
@BeforeEach
public void before() throws Exception {
assumeTrue(Log4jUtil.isLog4jMDCAvailable());
LogManager.getLoggerRepository().resetConfiguration();
GelfTestSender.getMessages().clear();
PropertyConfigurator.configure(getClass().getResource("/log4j/log4j-test-with-includefullmdc.properties"));
if (MDC.getContext() != null && MDC.getContext().keySet() != null) {
Set<String> keys = new HashSet<String>(MDC.getContext().keySet());
for (String key : keys) {
MDC.remove(key);
}
}
}
@Test
public void testWithoutFields() throws Exception {
Logger logger = Logger.getLogger(getClass());
logger.info(LOG_MESSAGE);
assertThat(GelfTestSender.getMessages()).hasSize(1);
GelfMessage gelfMessage = GelfTestSender.getMessages().get(0);
assertThat(gelfMessage.getField(MDC_MY_MDC1)).isNull();
assertThat(gelfMessage.getField(MDC_MY_MDC2)).isNull();
}
@Test
public void testWithMdc() throws Exception {
Logger logger = Logger.getLogger(getClass());
MDC.put(MDC_MY_MDC1, VALUE_1);
MDC.put(MDC_MY_MDC2, VALUE_2);
logger.info(LOG_MESSAGE);
assertThat(GelfTestSender.getMessages()).hasSize(1);
GelfMessage gelfMessage = GelfTestSender.getMessages().get(0);
assertThat(gelfMessage.getField(MDC_MY_MDC1)).isEqualTo(VALUE_1);
assertThat(gelfMessage.getField(MDC_MY_MDC2)).isEqualTo(VALUE_2);
}
@Test
public void testEmptyMessage() throws Exception {
Logger logger = Logger.getLogger(getClass());
logger.info("");
assertThat(GelfTestSender.getMessages()).isEmpty();
}
}