Skip to content

Commit 39fd663

Browse files
Provide Default Servlet filters used in RequestLoggingFilters
The new method `getDefaultFilters` can be used in custom implementations of `requestLoggingFilters` to exchange Filters with custom implementations. An example is used in the same class to inject the `requestRecordFactory` into the `GeneralRequestLogFilter`.
1 parent fd7bb09 commit 39fd663

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

cf-java-logging-support-servlet/src/main/java/com/sap/hcp/cf/logging/servlet/filter/RequestLoggingFilter.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package com.sap.hcp.cf.logging.servlet.filter;
22

3+
import java.util.function.UnaryOperator;
4+
import java.util.stream.Stream;
5+
6+
import javax.servlet.Filter;
7+
38
import org.slf4j.MDC;
49

510
/**
@@ -63,14 +68,21 @@ public class RequestLoggingFilter extends CompositeFilter {
6368
@Deprecated
6469
public static final String WRAP_REQUEST_INIT_PARAM = "wrapRequest";
6570

71+
public static Filter[] getDefaultFilters() {
72+
return new Filter[] { new AddVcapEnvironmentToLogContextFilter(), new AddHttpHeadersToLogContextFilter(),
73+
new CorrelationIdFilter(), new DynamicLogLevelFilter(), new GenerateRequestLogFilter() };
74+
}
75+
6676
public RequestLoggingFilter() {
67-
super(new AddVcapEnvironmentToLogContextFilter(), new AddHttpHeadersToLogContextFilter(),
68-
new CorrelationIdFilter(), new DynamicLogLevelFilter(), new GenerateRequestLogFilter());
77+
super(getDefaultFilters());
6978
}
7079

7180
public RequestLoggingFilter(RequestRecordFactory requestRecordFactory) {
72-
super(new AddVcapEnvironmentToLogContextFilter(), new AddHttpHeadersToLogContextFilter(),
73-
new CorrelationIdFilter(), new DynamicLogLevelFilter(), new GenerateRequestLogFilter(
74-
requestRecordFactory));
81+
super(Stream.of(getDefaultFilters()).map(injectFactory(requestRecordFactory)).toArray(Filter[]::new));
82+
}
83+
84+
private static UnaryOperator<Filter> injectFactory(RequestRecordFactory requestRecordFactory) {
85+
return filter -> filter instanceof GenerateRequestLogFilter ? new GenerateRequestLogFilter(requestRecordFactory)
86+
: filter;
7587
}
7688
}

0 commit comments

Comments
 (0)