Add documentation for logginginterceptor processing time variable (which
already worked, but wasn't documented)
This commit is contained in:
parent
78fd13c2f4
commit
022b556648
|
@ -113,17 +113,13 @@ import ca.uhn.fhir.rest.server.servlet.ServletRequestDetails;
|
||||||
* <td>${exceptionMessage}</td>
|
* <td>${exceptionMessage}</td>
|
||||||
* <td>Applies only to an error message: The message from {@link Exception#getMessage()}</td>
|
* <td>Applies only to an error message: The message from {@link Exception#getMessage()}</td>
|
||||||
* </tr>
|
* </tr>
|
||||||
* </table>
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* TODO: implement this, but it needs the logging to happen at the end
|
|
||||||
* <tr>
|
* <tr>
|
||||||
* <td>${processingTimeMillis}</td>
|
* <td>${processingTimeMillis}</td>
|
||||||
* <td>The number of milliseconds spent processing this request</td>
|
* <td>The number of milliseconds spent processing this request</td>
|
||||||
* </tr>
|
* </tr>
|
||||||
|
* </table>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class LoggingInterceptor extends InterceptorAdapter {
|
public class LoggingInterceptor extends InterceptorAdapter {
|
||||||
|
|
||||||
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(LoggingInterceptor.class);
|
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(LoggingInterceptor.class);
|
||||||
|
@ -169,7 +165,7 @@ public class LoggingInterceptor extends InterceptorAdapter {
|
||||||
StrLookup<?> lookup = new MyLookup(theRequestDetails.getServletRequest(), theRequestDetails);
|
StrLookup<?> lookup = new MyLookup(theRequestDetails.getServletRequest(), theRequestDetails);
|
||||||
StrSubstitutor subs = new StrSubstitutor(lookup, "${", "}", '\\');
|
StrSubstitutor subs = new StrSubstitutor(lookup, "${", "}", '\\');
|
||||||
|
|
||||||
// Actuall log the line
|
// Actually log the line
|
||||||
String line = subs.replace(myMessageFormat);
|
String line = subs.replace(myMessageFormat);
|
||||||
myLogger.info(line);
|
myLogger.info(line);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package ca.uhn.fhir.rest.server.interceptor;
|
package ca.uhn.fhir.rest.server.interceptor;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.greaterThan;
|
||||||
import static org.hamcrest.Matchers.matchesPattern;
|
import static org.hamcrest.Matchers.matchesPattern;
|
||||||
|
import static org.hamcrest.Matchers.startsWith;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertThat;
|
import static org.junit.Assert.assertThat;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
@ -149,6 +151,28 @@ public class LoggingInterceptorDstu2Test {
|
||||||
assertEquals("read - - Patient/1 - ", captor.getValue());
|
assertEquals("read - - Patient/1 - ", captor.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRequestProcessingTime() throws Exception {
|
||||||
|
|
||||||
|
LoggingInterceptor interceptor = new LoggingInterceptor();
|
||||||
|
interceptor.setMessageFormat("${operationType} - ${processingTimeMillis}");
|
||||||
|
servlet.setInterceptors(Collections.singletonList((IServerInterceptor) interceptor));
|
||||||
|
|
||||||
|
Logger logger = mock(Logger.class);
|
||||||
|
interceptor.setLogger(logger);
|
||||||
|
|
||||||
|
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient/1");
|
||||||
|
|
||||||
|
HttpResponse status = ourClient.execute(httpGet);
|
||||||
|
IOUtils.closeQuietly(status.getEntity().getContent());
|
||||||
|
|
||||||
|
ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
|
||||||
|
verify(logger, timeout(1000).times(1)).info(captor.capture());
|
||||||
|
assertThat(captor.getValue(), startsWith("read - "));
|
||||||
|
int millis = Integer.parseInt(captor.getValue().substring("read - ".length()));
|
||||||
|
assertThat(millis, greaterThan(1));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testProcessingTime() throws Exception {
|
public void testProcessingTime() throws Exception {
|
||||||
ourDelayMs = 110;
|
ourDelayMs = 110;
|
||||||
|
|
|
@ -342,6 +342,13 @@
|
||||||
This property causes references to unknown resources in created/updated resources to have a placeholder
|
This property causes references to unknown resources in created/updated resources to have a placeholder
|
||||||
target resource automatically created.
|
target resource automatically created.
|
||||||
</action>
|
</action>
|
||||||
|
<action type="add">
|
||||||
|
The server LoggingInterceptor has had a variable called
|
||||||
|
<![CDATA[<code>processingTimeMillis</code>]]> which logs the number
|
||||||
|
of milliseconds the server took to process a given request since
|
||||||
|
HAPI FHIR 2.5, but this was not documented. This variable has now been
|
||||||
|
documented as a part of the available features.
|
||||||
|
</action>
|
||||||
</release>
|
</release>
|
||||||
<release version="2.5" date="2017-06-08">
|
<release version="2.5" date="2017-06-08">
|
||||||
<action type="fix">
|
<action type="fix">
|
||||||
|
|
Loading…
Reference in New Issue