Polish "Complete Jetty Access Log configuration properties support"
Closes gh-16080
This commit is contained in:
		
							parent
							
								
									55a5a26b95
								
							
						
					
					
						commit
						0f60555031
					
				|  | @ -949,15 +949,16 @@ public class ServerProperties { | |||
| 			private boolean logLatency; | ||||
| 
 | ||||
| 			/** | ||||
| 			 * Set request paths that will not be logged. | ||||
| 			 */ | ||||
| 			private List<String> ignorePaths; | ||||
| 
 | ||||
| 			/** | ||||
| 			 * true - IP address from header will be logged, false - IP address from the connection will be logged | ||||
| 			 * Whether to log IP address from the "X-Forwarded-For" header rather than the | ||||
| 			 * one from the connection. | ||||
| 			 */ | ||||
| 			private boolean preferProxiedForAddress = false; | ||||
| 
 | ||||
| 			/** | ||||
| 			 * Request paths that should not be logged. | ||||
| 			 */ | ||||
| 			private List<String> ignorePaths; | ||||
| 
 | ||||
| 			public boolean isEnabled() { | ||||
| 				return this.enabled; | ||||
| 			} | ||||
|  | @ -1054,21 +1055,22 @@ public class ServerProperties { | |||
| 				this.logLatency = logLatency; | ||||
| 			} | ||||
| 
 | ||||
| 			public boolean isPreferProxiedForAddress() { | ||||
| 				return this.preferProxiedForAddress; | ||||
| 			} | ||||
| 
 | ||||
| 			public void setPreferProxiedForAddress(boolean preferProxiedForAddress) { | ||||
| 				this.preferProxiedForAddress = preferProxiedForAddress; | ||||
| 			} | ||||
| 
 | ||||
| 			public List<String> getIgnorePaths() { | ||||
| 				return ignorePaths; | ||||
| 				return this.ignorePaths; | ||||
| 			} | ||||
| 
 | ||||
| 			public void setIgnorePaths(List<String> ignorePaths) { | ||||
| 				this.ignorePaths = ignorePaths; | ||||
| 			} | ||||
| 
 | ||||
| 			public boolean getPreferProxiedForAddress(){ | ||||
| 				return preferProxiedForAddress; | ||||
| 			} | ||||
| 
 | ||||
| 			public void setPreferProxiedForAddress(boolean preferProxiedForAddress){ | ||||
| 				this.preferProxiedForAddress = preferProxiedForAddress; | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 	} | ||||
|  |  | |||
|  | @ -37,6 +37,7 @@ import org.springframework.boot.web.embedded.jetty.JettyServerCustomizer; | |||
| import org.springframework.boot.web.server.WebServerFactoryCustomizer; | ||||
| import org.springframework.core.Ordered; | ||||
| import org.springframework.core.env.Environment; | ||||
| import org.springframework.util.CollectionUtils; | ||||
| import org.springframework.util.unit.DataSize; | ||||
| 
 | ||||
| /** | ||||
|  | @ -167,13 +168,13 @@ public class JettyWebServerFactoryCustomizer implements | |||
| 			if (properties.getTimeZone() != null) { | ||||
| 				log.setLogTimeZone(properties.getTimeZone().getID()); | ||||
| 			} | ||||
| 			if (properties.getIgnorePaths() != null) { | ||||
| 				log.setIgnorePaths(properties.getIgnorePaths().toArray(new String[0])); | ||||
| 			} | ||||
| 			log.setLogCookies(properties.isLogCookies()); | ||||
| 			log.setLogServer(properties.isLogServer()); | ||||
| 			log.setLogLatency(properties.isLogLatency()); | ||||
| 			log.setPreferProxiedForAddress(properties.getPreferProxiedForAddress()); | ||||
| 			log.setPreferProxiedForAddress(properties.isPreferProxiedForAddress()); | ||||
| 			if (!CollectionUtils.isEmpty(properties.getIgnorePaths())) { | ||||
| 				log.setIgnorePaths(properties.getIgnorePaths().toArray(new String[0])); | ||||
| 			} | ||||
| 			server.setRequestLog(log); | ||||
| 		}); | ||||
| 	} | ||||
|  |  | |||
|  | @ -231,8 +231,8 @@ public class ServerPropertiesTests { | |||
| 		map.put("server.jetty.accesslog.file-date-format", "yyyymmdd"); | ||||
| 		map.put("server.jetty.accesslog.retention-period", "4"); | ||||
| 		map.put("server.jetty.accesslog.append", "true"); | ||||
| 		map.put("server.jetty.accesslog.ignore-paths[0]", "/a/path"); | ||||
| 		map.put("server.jetty.accesslog.ignore-paths[1]", "/b/path"); | ||||
| 		map.put("server.jetty.accesslog.prefer-proxied-for-address", "true"); | ||||
| 		map.put("server.jetty.accesslog.ignore-paths", "/a/path,/b/path"); | ||||
| 		bind(map); | ||||
| 		ServerProperties.Jetty jetty = this.properties.getJetty(); | ||||
| 		assertThat(jetty.getAccesslog().isEnabled()).isTrue(); | ||||
|  | @ -240,9 +240,9 @@ public class ServerPropertiesTests { | |||
| 		assertThat(jetty.getAccesslog().getFileDateFormat()).isEqualTo("yyyymmdd"); | ||||
| 		assertThat(jetty.getAccesslog().getRetentionPeriod()).isEqualTo(4); | ||||
| 		assertThat(jetty.getAccesslog().isAppend()).isTrue(); | ||||
| 		assertThat(jetty.getAccesslog().getIgnorePaths().size()).isEqualTo(2); | ||||
| 		assertThat(jetty.getAccesslog().getIgnorePaths().get(0)).isEqualTo("/a/path"); | ||||
| 		assertThat(jetty.getAccesslog().getIgnorePaths().get(1)).isEqualTo("/b/path"); | ||||
| 		assertThat(jetty.getAccesslog().isPreferProxiedForAddress()).isTrue(); | ||||
| 		assertThat(jetty.getAccesslog().getIgnorePaths()).containsExactly("/a/path", | ||||
| 				"/b/path"); | ||||
| 	} | ||||
| 
 | ||||
| 	@Test | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
|  * Copyright 2012-2018 the original author or authors. | ||||
|  * Copyright 2012-2019 the original author or authors. | ||||
|  * | ||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|  * you may not use this file except in compliance with the License. | ||||
|  | @ -16,16 +16,13 @@ | |||
| 
 | ||||
| package org.springframework.boot.autoconfigure.web.embedded; | ||||
| 
 | ||||
| import static org.assertj.core.api.Assertions.assertThat; | ||||
| import static org.mockito.Mockito.mock; | ||||
| import static org.mockito.Mockito.verify; | ||||
| 
 | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| import java.util.Locale; | ||||
| import java.util.TimeZone; | ||||
| 
 | ||||
| import org.eclipse.jetty.server.Connector; | ||||
| import org.eclipse.jetty.server.HttpConfiguration; | ||||
| import org.eclipse.jetty.server.HttpConfiguration.ConnectionFactory; | ||||
|  | @ -33,6 +30,7 @@ import org.eclipse.jetty.server.NCSARequestLog; | |||
| import org.eclipse.jetty.server.RequestLog; | ||||
| import org.junit.Before; | ||||
| import org.junit.Test; | ||||
| 
 | ||||
| import org.springframework.boot.autoconfigure.web.ServerProperties; | ||||
| import org.springframework.boot.context.properties.bind.Bindable; | ||||
| import org.springframework.boot.context.properties.bind.Binder; | ||||
|  | @ -43,6 +41,10 @@ import org.springframework.boot.web.embedded.jetty.JettyWebServer; | |||
| import org.springframework.mock.env.MockEnvironment; | ||||
| import org.springframework.test.context.support.TestPropertySourceUtils; | ||||
| 
 | ||||
| import static org.assertj.core.api.Assertions.assertThat; | ||||
| import static org.mockito.Mockito.mock; | ||||
| import static org.mockito.Mockito.verify; | ||||
| 
 | ||||
| /** | ||||
|  * Tests for {@link JettyWebServerFactoryCustomizer}. | ||||
|  * | ||||
|  | @ -101,8 +103,7 @@ public class JettyWebServerFactoryCustomizerTests { | |||
| 				"server.jetty.accesslog.log-server=true", | ||||
| 				"server.jetty.accesslog.log-latency=true", | ||||
| 				"server.jetty.accesslog.prefer-proxied-for-address=true", | ||||
| 				"server.jetty.accesslog.ignore-paths[0]=/a/path", | ||||
| 				"server.jetty.accesslog.ignore-paths[1]=/b/path"); | ||||
| 				"server.jetty.accesslog.ignore-paths=/a/path,/b/path"); | ||||
| 		JettyWebServer server = customizeAndGetServer(); | ||||
| 		NCSARequestLog requestLog = getNCSARequestLog(server); | ||||
| 		assertThat(requestLog.getFilename()).isEqualTo(logFile.getAbsolutePath()); | ||||
|  | @ -118,8 +119,7 @@ public class JettyWebServerFactoryCustomizerTests { | |||
| 		assertThat(requestLog.getLogLatency()).isTrue(); | ||||
| 		assertThat(requestLog.getPreferProxiedForAddress()).isTrue(); | ||||
| 		assertThat(requestLog.getIgnorePaths().length).isEqualTo(2); | ||||
| 		assertThat(requestLog.getIgnorePaths()[0]).isEqualTo("/a/path"); | ||||
| 		assertThat(requestLog.getIgnorePaths()[1]).isEqualTo("/b/path"); | ||||
| 		assertThat(requestLog.getIgnorePaths()).containsExactly("/a/path", "/b/path"); | ||||
| 	} | ||||
| 
 | ||||
| 	@Test | ||||
|  | @ -133,8 +133,8 @@ public class JettyWebServerFactoryCustomizerTests { | |||
| 		assertThat(requestLog.getLogCookies()).isFalse(); | ||||
| 		assertThat(requestLog.getLogServer()).isFalse(); | ||||
| 		assertThat(requestLog.getLogLatency()).isFalse(); | ||||
| 		assertThat(requestLog.getIgnorePaths().length).isZero(); | ||||
| 		assertThat(requestLog.getPreferProxiedForAddress()).isFalse(); | ||||
| 		assertThat(requestLog.getIgnorePaths()).isNull(); | ||||
| 	} | ||||
| 
 | ||||
| 	private NCSARequestLog getNCSARequestLog(JettyWebServer server) { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue