java - 如何以编程方式设置 Spring Boot 的日志记录级别?

标签 java spring-boot slf4j logback

我知道如何通过 environment variables 设置日志级别和 application properties .

有没有办法以编程方式设置它们?

我想为特定测试类(使用 SpringJUnit4ClassRunner 和 @SpringApplicationConfiguration )设置日志级别,但不是全部,并且没有单独的属性每个组合的文件。

我试过defining a non-lazy bean to add a new PropertySource to the environment ;该方法被调用,但没有效果。

@Bean
@Lazy(false)
public PropertySource testProperties(ConfigurableEnvironment environment) {
  PropertySource properties = new MapPropertySource("testProperties", Collections.singletonMap(
      "logging.level.org.springframework.security", "DEBUG"
  ));

  environment.getPropertySources().addFirst(properties);
  return properties;
}

最佳答案

您可以在测试类上使用@TestPropertySource。与您尝试的基于 Bean 的方法不同,@TestPropertySource 会在上下文启动之前将属性源添加到环境中,从而允许在初始化日志记录系统时获取属性。

类似这样的事情:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(YourApplication.class)
@TestPropertySource(properties = "logging.level.org.springframework.security:DEBUG")
public class YourApplicationTests {
    // …
}

关于java - 如何以编程方式设置 Spring Boot 的日志记录级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35346299/

相关文章:

java - 如何在 Java 中运行不同的线程?

java - 无法使用 JAXB 生成枚举类

递归方法的 Java 方法验证

java.lang.NoSuchMethodError : org. slf4j.impl.StaticLoggerBinder.getSingleton()Lorg/slf4j/impl/StaticLoggerBinder;

java - 查询不适用于 SQL Server 2008 中的表

java - 使用证书中的 pub key 进行 Spring Boot Oauth2 访问 token 验证

java - Spring @PropertySource 值不覆盖

java - 如何使用 slf4j/log4j2 发送电子邮件通知?

java - 转换 LOG4J Priority.class >> SLF4J + logback

java - 如何重载方法