通过环境变量在Spring Boot中设置日志级别

10 浏览
0 Comments

通过环境变量在Spring Boot中设置日志级别

在Spring Boot应用程序中,只通过环境变量是否应该能够设置日志级别?\n我不想使用application.properties,因为我在Cloud Foundry上运行,并且希望在不部署的情况下进行更改(但在应用程序重新启动或重新部署后才能生效)。\n我尝试设置环境变量,如LOGGING_LEVEL_ORG_SPRINGFRAMEWORK=TRACE,但没有效果。但是,在application.properties中放置logging.level.org.springframework: TRACE确实有效。

0
0 Comments

通过环境变量设置Spring Boot中的日志级别是可能的,但是需要注意环境变量的命名方式。在尝试使用大写的环境变量名称LOGGING_LEVEL_ORG_SPRINGFRAMEWORK=DEBUG时,无法成功设置日志级别。同时,也不想通过application.properties_JAVA_OPTIONS来设置日志级别。

经过研究org.springframework.boot.logging.LoggingApplicationListener类后,发现Spring Boot试图将日志级别设置为DEBUG,但将ORG_SPRINGFRAMEWORK作为包名,而这并不是真正的包名。因此,结论是可以通过环境变量来设置日志级别,但需要按照以下形式命名:

LOGGING_LEVEL_org.springframework=DEBUG

或者

logging.level.org.springframework=DEBUG

以上方法在Spring Boot 1.5.3版本中经过测试有效。但尝试在AWS上使用Spring Boot 1.3.8时,未能成功设置日志级别。然而,这种方法在SpringBoot 2.5.3版本中对我有效。

0
0 Comments

在Spring Boot中通过环境变量设置日志级别只能针对包进行操作,而不能针对类进行操作。这个问题的出现是因为在Spring Boot的LoggingApplicationListener中,对于类的日志级别定义会被转换成小写。因此,无法通过环境变量来为类设置日志级别。解决方法是可以使用SPRING_APPLICATION_JSON环境变量来设置日志级别,其值以JSON格式描述所需的属性。这个问题也被记录在Spring Boot的文档中,文档中提到如果需要为类配置日志级别,可以使用SPRING_APPLICATION_JSON变量。这个问题也适用于Quarkus框架。总结起来,通过环境变量设置日志级别只能针对包进行操作,对于类则需要使用SPRING_APPLICATION_JSON环境变量来进行配置。

0
0 Comments

问题的原因是希望通过环境变量设置Spring Boot日志级别,但尝试使用_JAVA_OPTIONS环境变量未能实现预期的效果。

解决方法是尝试使用-D参数来设置日志级别,并将此参数传递给java命令。具体地,可以尝试设置_JAVA_OPTIONS环境变量,并将参数-Dlogging.level.org.springframework=TRACE作为默认的JVM参数传递给每个JVM实例。在实践中,可以通过运行mvn spring-boot:run -Dlogging.level.org.springframework=TRACE命令来确认该方法是否有效。需要注意的是,环境变量_JAVA_OPTIONS的命名中的下划线是必需的。

此外,也可以尝试使用JAVA_OPTS环境变量来传递参数。对于Cloud Foundry Java Buildpack,可以查阅相关文档了解如何使用JAVA_OPTS环境变量。

另外,也有建议使用JAVA_TOOL_OPTIONS环境变量而不是_JAVA_OPTIONS,具体细节可以参考相关链接。

要通过环境变量设置Spring Boot日志级别,可以尝试使用_JAVA_OPTIONS、JAVA_OPTS或JAVA_TOOL_OPTIONS环境变量,并将-Dlogging.level.org.springframework=TRACE作为参数传递给java命令。具体方法可以参考上述链接中的相关文档。

0