Merge pull request #10588 from Eddú Meléndez
* gh-10588: Polish "Provide informative reason when rejecting request with invalid level" Provide informative reason when rejecting request with invalid level
This commit is contained in:
commit
2eb0c3ba1e
|
@ -22,10 +22,12 @@ import org.springframework.boot.actuate.endpoint.LoggersEndpoint;
|
|||
import org.springframework.boot.actuate.endpoint.LoggersEndpoint.LoggerLevels;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.logging.LogLevel;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||
|
||||
/**
|
||||
* Adapter to expose {@link LoggersEndpoint} as an {@link MvcEndpoint}.
|
||||
|
@ -68,19 +70,32 @@ public class LoggersMvcEndpoint extends EndpointMvcAdapter {
|
|||
// disabled
|
||||
return getDisabledResponse();
|
||||
}
|
||||
try {
|
||||
LogLevel logLevel = getLogLevel(configuration);
|
||||
this.delegate.setLogLevel(name, logLevel);
|
||||
return ResponseEntity.ok().build();
|
||||
}
|
||||
catch (IllegalArgumentException ex) {
|
||||
return ResponseEntity.badRequest().build();
|
||||
}
|
||||
LogLevel logLevel = getLogLevel(configuration);
|
||||
this.delegate.setLogLevel(name, logLevel);
|
||||
return ResponseEntity.ok().build();
|
||||
}
|
||||
|
||||
private LogLevel getLogLevel(Map<String, String> configuration) {
|
||||
String level = configuration.get("configuredLevel");
|
||||
return (level == null ? null : LogLevel.valueOf(level.toUpperCase()));
|
||||
try {
|
||||
return (level == null ? null : LogLevel.valueOf(level.toUpperCase()));
|
||||
}
|
||||
catch (IllegalArgumentException ex) {
|
||||
throw new InvalidLogLevelException(level);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Exception thrown when the specified log level cannot be found.
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
@ResponseStatus(value = HttpStatus.BAD_REQUEST, reason = "No such log level")
|
||||
public static class InvalidLogLevelException extends RuntimeException {
|
||||
|
||||
public InvalidLogLevelException(String level) {
|
||||
super("Log level '" + level + "' is invalid");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -49,6 +49,7 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
|||
import org.springframework.web.context.WebApplicationContext;
|
||||
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
import static org.mockito.BDDMockito.given;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
@ -174,7 +175,8 @@ public class LoggersMvcEndpointTests {
|
|||
public void setLoggerWithWrongLogLevel() throws Exception {
|
||||
this.mvc.perform(post("/loggers/ROOT").contentType(MediaType.APPLICATION_JSON)
|
||||
.content("{\"configuredLevel\":\"other\"}"))
|
||||
.andExpect(status().is4xxClientError());
|
||||
.andExpect(status().is4xxClientError())
|
||||
.andExpect(status().reason(is("No such log level")));
|
||||
verifyZeroInteractions(this.loggingSystem);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue