有没有办法在启动器中使用系统属性更改类的日志记录级别?我希望能够根据我正在处理的类来轻松快速地更改类的调试级别。能够在发布时使用类似-Dcom.example.package.myclass.logger.level=TRACE
的方式执行此操作
或
-Dcom.slf4j.trace=com.example.package.myclass
会非常有用。
我正在使用slf4j / logback,但我也对在log4j中执行此操作的方式感兴趣
我知道如何以编程方式更改级别,但我不想更改代码,只需更改启动器
如果相关,我正在使用配置文件logback-test.xml
如果不可能,是否有其他技巧可以在不更改代码或不得不污染干净的xml文件的情况下执行此操作?
答案 0 :(得分:3)
[更新]
我重新阅读了你的问题,我认为我们可以更接近。
将以下内容添加到logback.xml:
<if condition='isDefined("com.slf4j.trace")'>
<then>
<logger name="${com.slf4j.trace}" level="TRACE"/>
</then>
</if>
按照on the Logback Setup page所述,将Codehaus Janino和Apache commons-compiler jar添加到类路径中。
现在您使用
启动应用-Dcom.slf4j.trace=com.example.package.MyClass
答案 1 :(得分:0)
logback docs中的一些想法:
Logback-classic可以扫描其配置文件中的更改 配置文件更改时自动重新配置。
<configuration scan="true" scanPeriod="30 seconds" >
...
</configuration>
此外,您可以将默认配置文件的位置指定为系统属性:
java -Dlogback.configurationFile=/path/to/config.xml chapters.configuration.MyApp1
所以它比你描述的更方便。