我正在尝试在Spring Boot应用程序的运行时更改日志记录级别(从DEBUG到ERROR或WARN)。代码如下。
我已经关注了以下帖子,但是仍然发布更改日志记录级别的请求无效。请在下面查看请求,应用程序无响应,我也看不到日志中的任何错误。
https://docs.spring.io/spring- boot/docs/1.5.1.RELEASE/reference/htmlsingle/#production-ready-logger- configuration
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>spring-boot-web-spring-security</artifactId> <packaging>jar</packaging> <name>Spring Boot Web Spring Security</name> <description>Spring Boot Web Spring Security Example</description> <url>https://www.mkyong.com</url> <version>1.0</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.3.RELEASE</version> </parent> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- Spring Security --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity4</artifactId> </dependency> <!-- hot swapping, disable cache for template, enable live reload --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> <!-- Optional, for bootstrap --> <dependency> <groupId>org.webjars</groupId> <artifactId>bootstrap</artifactId> <version>3.3.7</version> </dependency> </dependencies> <build> <plugins> <!-- Package as an executable jar/war --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
控制器类
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @Controller public class DefaultController { Logger logger = LoggerFactory.getLogger(DefaultController.class); @GetMapping("/") public String home1() { logger.info("returning default /"); return "/home"; } @GetMapping("/home") public String home() { logger.debug("returning home"); return "/home"; } @GetMapping("/admin") public String admin() { logger.warn("returning admin"); return "/admin"; } @GetMapping("/user") public String user() { logger.error("returning user"); return "/user"; } @GetMapping("/about") public String about() { logger.trace("returning about"); return "/about"; } @GetMapping("/login") public String login() { logger.warn("returning login"); return "/login"; } @GetMapping("/403") public String error403() { return "/error/403"; } }
SpringSecurityConfig
protected void configure(HttpSecurity http) throws Exception { http.csrf().disable() .authorizeRequests() .antMatchers("/", "/home", "/about","/proxy/**","/app/**","/admin/**","/loggers/**","/loggers/de.springbootbuch/**", "/loggers/de.springbootbuch/").permitAll() .anyRequest().authenticated() .antMatchers("/admin/").hasAnyRole("ADMIN") .antMatchers("/user/**").hasAnyRole("USER") //.antMatchers("/admin/**").hasAnyRole("ADMIN") .and() .formLogin() .loginPage("/login") .permitAll() .and() .logout() .permitAll() .and() .exceptionHandling().accessDeniedHandler(accessDeniedHandler); }
Application.properties , 对此文件有什么要做的事情吗
logging.level.org.springframework.security=ERROR logging.level.com.test=DEBUG management.security.enabled=false
发送到更改日志记录级别的请求 :
curl -X "POST" "http://localhost:8080/loggers/de.springbootbuch" -H "Content-Type: application/json; charset=utf-8" -d $'{ "configuredLevel": "WARN" }' curl -X "POST" "http://localhost:8080/loggers/de.springbootbuch" -H "Content-Type: application/json; charset=utf-8" -d $'{ "configuredLevel": "ERROR" }'
您可以使用弹簧启动执行器的loggers端点来更改所需类的日志记录级别。在spring-boot 1.5中,您可以使用:
loggers
`curl -X "POST" "http://localhost:8080/loggers/<class or package name>" -H "Content- Type: application/json; charset=utf-8" -d $'{ "configuredLevel": "ERROR" }'`
从弹簧启动执行器端点开始,需要加上前缀actuator。
actuator