【发布时间】:2016-06-07 17:00:58
【问题描述】:
我有一个 Java 库,在它之上我有轻量级的 groovy 脚本,它们用作基于终端的命令行实用程序。因此,与其要求我的用户
java -cp ... com.foo.bar.package.SomeMainClass ...
他们可以使用“标准”类似 POSIX 的实用程序:
footool -a <arg> -b <another> -vfg <positional_arg>
我想要 -v 参数来控制控制台附加程序的日志记录级别。现在,我 在 一个 groovy 脚本。 Groovy 拥有最出色的 CLIbuilder 可以使参数解析变得容易。 Logback 是使用 groovy 程序配置的。我想做的事情应该很容易。对吧?
然而,检查-v 标志的值似乎几乎不可能,并相应地设置Level 为已在 XML 中指定的附加程序的阈值过滤器,甚至创建过滤器和附加程序从头开始并添加到记录器。
真的吗?似乎必须是一种无需为 Joran 编写 30 行 Java 代码的方法。我必须做些什么才能让这个(或者不是 Joran 的 30 行 Java 代码的东西)在我的 groovy 脚本中工作?
def cliBuilder = new CliBuilder...
def options = cli.parse(args)
def logLevel = options.v ? Level.DEBUG : Level.INFO
appender("CONSOLE", ConsoleAppender) {
filter(ThresholdFilter) {
level = logLevel
}
encoder(PatternLayoutEncoder) {
pattern = "%-4relative [%thread] %-5level %logger{30} - %msg%n"
}
}
【问题讨论】:
标签: groovy logback logback-groovy