package biz.paluch.logging.gelf.logback;
import static org.assertj.core.api.Assertions.assertThat;
import java.net.URL;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.slf4j.MDC;
import biz.paluch.logging.gelf.GelfTestSender;
import biz.paluch.logging.gelf.intern.GelfMessage;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.joran.JoranConfigurator;
/**
* @author <a href="mailto:tobiassebastian.kaefer@1und1.de">Tobias Kaefer</a>
* @since 2013-10-07
*/
public class GelfLogbackAppenderDynamicHostnameTests {
public static final String LOG_MESSAGE = "foo bar test log message";
private LoggerContext lc;
@BeforeEach
public void before() throws Exception {
lc = new LoggerContext();
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(lc);
URL xmlConfigFile = getClass().getResource("/logback/logback-gelf-with-dynamic-originhost.xml");
configurator.doConfigure(xmlConfigFile);
GelfTestSender.getMessages().clear();
MDC.remove("mdcField1");
}
@Test
public void testOriginHost() throws Exception {
Logger logger = lc.getLogger(getClass());
logger.info(LOG_MESSAGE);
assertThat(GelfTestSender.getMessages()).hasSize(1);
GelfMessage gelfMessage = GelfTestSender.getMessages().get(0);
String crossCheckHostName = gelfMessage.getAdditonalFields().get("crossCheckHostName");
String json = gelfMessage.toJson();
assertThat(json).contains("\"_crossCheckHostName\":\"" + crossCheckHostName + "\"");
assertThat(json).contains("\"host\":\"" + crossCheckHostName + "\"");
}
}