我已经构建了一个Java命令行工具,它使用SLF4J(simple
绑定)进行日志记录。在整个代码库中,我有许多不同的INFO
,TRACE
,WARN
和ERROR
语句。通常,当用户运行此工具时,我希望它只记录INFO
及更高版本(所以:INFO
,WARN
和ERROR
)。但是,我希望用户能够在命令行中提供--verbose
(或-v
)选项,并且还会记录TRACE
条消息。
重申一下,正常的命令行调用:
java -jar mytool.jar --fizz "30" --buzz "true"
但在"详细模式":
java -jar mytool.jar --fizz "30" --buzz "true" --verbose
我知道我可以从命令行配置SLF4J设置,如下所示:
java -jar -Dorg.slf4j.simpleLogger.defaultLogLevel "trace" mytool.jar --fizz "30" --buzz "true"
但这不是用户友好的,而且它也会泄漏"事实上SLF4J是最终用户的底层日志记录系统。并不是说我担心安全性,它只是感觉就像一个不那么优雅的配置解决方案。恕我直言,这个工具的最终用户不应该知道有关该工具的任何实现细节,以便运行它,尤其是TRACE
日志级别的含义或代表。
有什么想法吗?
答案 0 :(得分:1)
如何检查--verbose
选项是否存在并执行此操作
System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "trace");
?