任何人都可以解释当_JAVA_OPTIONS环境变量定义时以及在Windows机器上启动应用程序时Java会做什么?
在 Spring 中,可以通过环境变量设置日志类别级别。我在 Quarkus 应用程序中尝试了相同的操作,并使用以下记录器声明:
package org.my.group.resteasyjackson;
public class JacksonResource {
private static final Logger LOGGER = LoggerFactory.getLogger(JacksonResource.class);
@GET
public Set<Quark> list() {
LOGGER.info("Hello");
return quarks;
}
}
Run Code Online (Sandbox Code Playgroud)
执行构建工件
QUARKUS_LOG_CATEGORY_ORG_MY_LEVEL=WARN java -jar my-artifactId-my-version-runner.jar
将在信息级别记录任何内容(因为它是默认值),因此会记录“Hello”消息。
然而,插入
quarkus.log.category."org.my".level=WARN
Run Code Online (Sandbox Code Playgroud)
文件中的application.properties内容按预期工作。此用例中的环境变量是否不可用于 Quarkus 应用程序?
有没有办法以编程方式设置它们?
我想为特定测试类(使用SpringJUnit4ClassRunner和@SpringApplicationConfiguration)设置日志级别,但不是所有测试类都设置日志级别,并且没有针对每个组合的单独属性文件.
我尝试定义一个非懒惰的bean PropertySource来为环境添加一个新的 ; 该方法被调用,但没有效果.
@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;
}
Run Code Online (Sandbox Code Playgroud)