我有一个 Java 库,在它之上我有轻量级的 groovy 脚本,它们用作基于终端的命令行实用程序。因此,与其要求我的用户
java -cp ... com.foo.bar.package.SomeMainClass ...
他们可以访问“标准”类似 POSIX 的实用程序:
footool -a <arg> -b <another> -vfg <positional_arg>
我希望该-v
参数可以控制控制台附加程序的日志记录级别。现在,我在一个时髦的脚本中。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"
}
}