使用 "verbose" 选项包装 SLF4J
Wrapping SLF4J with a "verbose" option
我构建了一个 Java 命令行工具,它使用 SLF4J(simple
绑定)进行日志记录。在其代码库中,我有许多不同的 INFO
、TRACE
、WARN
和 ERROR
语句。通常,当用户 运行 这个工具时,我希望它只记录 INFO
及以上(所以:INFO
、WARN
和 ERROR
)。但是,我希望用户能够在命令行提供 --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");
?
我构建了一个 Java 命令行工具,它使用 SLF4J(simple
绑定)进行日志记录。在其代码库中,我有许多不同的 INFO
、TRACE
、WARN
和 ERROR
语句。通常,当用户 运行 这个工具时,我希望它只记录 INFO
及以上(所以:INFO
、WARN
和 ERROR
)。但是,我希望用户能够在命令行提供 --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");
?