通过环境变量设置日志级别只能对包进行,而不能对类执行
我遇到了与OP相同的问题。我想知道为什么这里的一些用户报告说,建议的解决方案效果很好,而另一些用户则没有。
我正在使用Spring Boot 2.1,在过去的几年中,问题显然发生了一些变化,但目前的情况如下:
TL;DR
设置包的日志级别有效:
LOGGING_LEVEL_COM_ACME_PACKAGE=DEBUG
虽然为特定类设置日志级别不起作用:
LOGGING_LEVEL_COM_ACME_PACKAGE_CLASS=DEBUG
这怎么可能?
看看Spring Boot的LogingApplicationListener。
如果要对其进行调试并在突出显示的代码块中设置断点,则会看到类的日志级别定义变为 。
因此,类的日志级别定义看起来与包的日志级别定义完全相同。com.acme.mypackage.MyClass
com.acme.mypackage.myclass
这与Spring的宽松绑定有关,它提出了环境变量的大写表示法。因此,对于 LoggingApplicationListener,类的典型驼峰大小写表示法是不可见的:的环境变量必须定义为并且将像在 Spring 的环境中一样可用(此示例忽略类的完全限定名称)。MyClass
MYCLASS
myclass
一旦类的驼峰大小写符号丢失,在运行时,就没有机会恢复原始类名。因此,环境变量中的日志定义不适用于类,而仅适用于包。