|
|
|
|
@ -16,10 +16,15 @@
@@ -16,10 +16,15 @@
|
|
|
|
|
|
|
|
|
|
package org.springframework.boot.actuate.autoconfigure.web.servlet; |
|
|
|
|
|
|
|
|
|
import java.io.File; |
|
|
|
|
|
|
|
|
|
import javax.servlet.Filter; |
|
|
|
|
|
|
|
|
|
import org.apache.catalina.Valve; |
|
|
|
|
import org.apache.catalina.valves.AccessLogValve; |
|
|
|
|
import org.eclipse.jetty.server.NCSARequestLog; |
|
|
|
|
import org.eclipse.jetty.server.RequestLog; |
|
|
|
|
import org.eclipse.jetty.server.Server; |
|
|
|
|
|
|
|
|
|
import org.springframework.beans.factory.BeanFactory; |
|
|
|
|
import org.springframework.beans.factory.HierarchicalBeanFactory; |
|
|
|
|
@ -39,6 +44,7 @@ import org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactor
@@ -39,6 +44,7 @@ import org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactor
|
|
|
|
|
import org.springframework.boot.autoconfigure.web.embedded.UndertowWebServerFactoryCustomizer; |
|
|
|
|
import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryCustomizer; |
|
|
|
|
import org.springframework.boot.autoconfigure.web.servlet.TomcatServletWebServerFactoryCustomizer; |
|
|
|
|
import org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory; |
|
|
|
|
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; |
|
|
|
|
import org.springframework.boot.web.embedded.undertow.UndertowServletWebServerFactory; |
|
|
|
|
import org.springframework.boot.web.server.WebServerFactoryCustomizer; |
|
|
|
|
@ -48,6 +54,7 @@ import org.springframework.context.annotation.Configuration;
@@ -48,6 +54,7 @@ import org.springframework.context.annotation.Configuration;
|
|
|
|
|
import org.springframework.core.Ordered; |
|
|
|
|
import org.springframework.security.config.BeanIds; |
|
|
|
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; |
|
|
|
|
import org.springframework.util.StringUtils; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* {@link ManagementContextConfiguration} for Servlet web endpoint infrastructure when a |
|
|
|
|
@ -71,16 +78,22 @@ class ServletManagementChildContextConfiguration {
@@ -71,16 +78,22 @@ class ServletManagementChildContextConfiguration {
|
|
|
|
|
|
|
|
|
|
@Bean |
|
|
|
|
@ConditionalOnClass(name = "io.undertow.Undertow") |
|
|
|
|
public UndertowAccessLogCustomizer undertowAccessLogCustomizer() { |
|
|
|
|
public UndertowAccessLogCustomizer undertowManagementAccessLogCustomizer() { |
|
|
|
|
return new UndertowAccessLogCustomizer(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Bean |
|
|
|
|
@ConditionalOnClass(name = "org.apache.catalina.valves.AccessLogValve") |
|
|
|
|
public TomcatAccessLogCustomizer tomcatAccessLogCustomizer() { |
|
|
|
|
public TomcatAccessLogCustomizer tomcatManagementAccessLogCustomizer() { |
|
|
|
|
return new TomcatAccessLogCustomizer(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Bean |
|
|
|
|
@ConditionalOnClass(name = "org.eclipse.jetty.server.Server") |
|
|
|
|
public JettyAccessLogCustomizer jettyManagementAccessLogCustomizer() { |
|
|
|
|
return new JettyAccessLogCustomizer(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Configuration |
|
|
|
|
@ConditionalOnClass({ EnableWebSecurity.class, Filter.class }) |
|
|
|
|
@ConditionalOnBean(name = BeanIds.SPRING_SECURITY_FILTER_CHAIN, search = SearchStrategy.ANCESTORS) |
|
|
|
|
@ -119,8 +132,14 @@ class ServletManagementChildContextConfiguration {
@@ -119,8 +132,14 @@ class ServletManagementChildContextConfiguration {
|
|
|
|
|
|
|
|
|
|
abstract static class AccessLogCustomizer implements Ordered { |
|
|
|
|
|
|
|
|
|
private static final String MANAGEMENT_PREFIX = "management_"; |
|
|
|
|
|
|
|
|
|
protected String customizePrefix(String prefix) { |
|
|
|
|
return "management_" + prefix; |
|
|
|
|
prefix = (prefix != null) ? prefix : ""; |
|
|
|
|
if (prefix.startsWith(MANAGEMENT_PREFIX)) { |
|
|
|
|
return prefix; |
|
|
|
|
} |
|
|
|
|
return MANAGEMENT_PREFIX + prefix; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
@ -163,4 +182,30 @@ class ServletManagementChildContextConfiguration {
@@ -163,4 +182,30 @@ class ServletManagementChildContextConfiguration {
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static class JettyAccessLogCustomizer extends AccessLogCustomizer |
|
|
|
|
implements WebServerFactoryCustomizer<JettyServletWebServerFactory> { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void customize(JettyServletWebServerFactory factory) { |
|
|
|
|
factory.addServerCustomizers(this::customizeServer); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void customizeServer(Server server) { |
|
|
|
|
RequestLog requestLog = server.getRequestLog(); |
|
|
|
|
if (requestLog != null && requestLog instanceof NCSARequestLog) { |
|
|
|
|
customizeRequestLog((NCSARequestLog) requestLog); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void customizeRequestLog(NCSARequestLog requestLog) { |
|
|
|
|
String filename = requestLog.getFilename(); |
|
|
|
|
if (StringUtils.hasLength(filename)) { |
|
|
|
|
File file = new File(filename); |
|
|
|
|
file = new File(file.getParentFile(), customizePrefix(file.getName())); |
|
|
|
|
requestLog.setFilename(file.getPath()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|