1
我有一個Java庫,最重要的是我有輕量級的groovy腳本作爲基於終端的命令行工具。因此,而不是問我的用戶從groovy腳本配置logback
java -cp ... com.foo.bar.package.SomeMainClass ...
他們有機會獲得一個「標準」 POSIX樣工具:
footool -a <arg> -b <another> -vfg <positional_arg>
我想這-v
參數來控制日誌記錄級別到控制檯的appender。現在,我在 groovy腳本。 Groovy擁有最優秀的CLIbuilder,使參數解析變得簡單。 Logback使用groovy程序進行配置。我想做的事情應該很容易。對?
然而它似乎幾乎不可能檢查-v
標誌的值,並相應設置Level
對於一個已經在XML中指定,甚至從頭創建過濾器和附加器並添加一個appender閾值過濾器到記錄器。
真的嗎?似乎有必須是一種沒有爲Joran編寫30行Java代碼的方法。我需要做些什麼才能在我的groovy腳本中得到這個(或者不是Joran的30行Java代碼)?
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"
}
}
設置記錄器的級別將禁用所有appender的級別。這不是我的Groovy/XML配置所要做的。使用Groovy DSL配置帶有閾值過濾器的appender非常緊湊且易於使用。在Java中似乎不是一種緊湊的方式。 – dgorur