使用"详细"包装SLF4J选项

时间:2015-06-30 14:03:34

标签: java slf4j

我已经构建了一个Java命令行工具,它使用SLF4J(simple绑定)进行日志记录。在整个代码库中,我有许多不同的INFOTRACEWARNERROR语句。通常,当用户运行此工具时,我希望它只记录INFO及更高版本(所以:INFOWARNERROR)。但是,我希望用户能够在命令行中提供--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日志级别的含义或代表。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如何检查--verbose选项是否存在并执行此操作 System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "trace");