package com.example.request_log; import com.google.common.collect.ImmutableList; import io.dropwizard.testing.ConfigOverride; import org.junit.Test; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.List; import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; public class CustomRequestLogPatternIntegrationTest extends AbstractRequestLogPatternIntegrationTest { private static final String LOG_FORMAT = "%h|%reqParameter{name}|%m|%U|%s|%b|%i{User-Agent}|%responseHeader{Content-Type}"; @Override protected List<ConfigOverride> configOverrides() { return ImmutableList.<ConfigOverride>builder() .addAll(super.configOverrides()) .add(ConfigOverride.config("server.requestLog.appenders[0].logFormat", LOG_FORMAT)) .build(); } @Test public void testCustomPattern() throws Exception { String url = String.format("http://localhost:%d/greet?name=Charley", dropwizardAppRule.getLocalPort()); for (int i = 0; i < 100; i++) { client.target(url).request().get(); } Thread.sleep(100); // To let async logs to finish List<String> logs; try (BufferedReader reader = new BufferedReader(new FileReader(new File(tempFile)))) { logs = reader.lines().collect(Collectors.toList()); } // We should have exactly 100 log entries with correct data assertThat(logs).hasSize(100).containsOnly( "127.0.0.1|Charley|GET|/greet|200|15|TestApplication (test-request-logs)|text/plain"); } }