使用 "verbose" 选项包装 SLF4J

Wrapping SLF4J with a "verbose" option

我构建了一个 Java 命令行工具,它使用 SLF4J(simple 绑定)进行日志记录。在其代码库中,我有许多不同的 INFOTRACEWARNERROR 语句。通常,当用户 运行 这个工具时,我希望它只记录 INFO 及以上(所以:INFOWARNERROR)。但是,我希望用户能够在命令行提供 --verbose(或 -v)选项,并记录 TRACE 消息。

重申一下,正常的命令行调用:

java -jar mytool.jar --fizz "30" --buzz "true"

但是在"verbose mode":

java -jar mytool.jar --fizz "30" --buzz "true" --verbose

知道我可以像这样从命令行配置SLF4J设置:

java -jar -Dorg.slf4j.simpleLogger.defaultLogLevel "trace" mytool.jar --fizz "30" --buzz "true"

但这对用户来说并不友好,而且 "leaks" SLF4J 是最终用户的基础日志系统这一事实。并不是我担心安全性,它只是 感觉 像一个不太优雅的配置解决方案。恕我直言,此工具的最终用户不必了解有关该工具的任何实现细节即可 运行,尤其是 TRACE 日志级别的含义或代表。

有什么想法吗?

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