【发布时间】:2015-09-17 09:08:27
【问题描述】:
我已经构建了一个使用 SLF4J(simple 绑定)进行日志记录的 Java 命令行工具。在其代码库中,我有许多不同的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 日志级别的含义或代表。
有什么想法吗?
【问题讨论】: