Ответ 1
Сверху моей головы вы не могли бы сделать немного самопровода:
def printErr = System.err.&println
printErr("AHHH")
но это немного ручное
Я ищу способ перенаправления вывода в groovy script на stderr:
catch(Exception e) {
println "Want this to go to stderr"
}
Сверху моей головы вы не могли бы сделать немного самопровода:
def printErr = System.err.&println
printErr("AHHH")
но это немного ручное
Другая довольно компактная альтернатива такова:
System.err << "Want this to go to stderr"
Или вы можете добавить это в начало своего script
def err = System.err
...
err << "Want this to go to stderr"
что я теперь делаю в своих сценариях оболочки groovy
Groovy имеет доступ к JRE:
System.err.println "goes to stderr"
Хотя может быть более Groovy -fied way...
Если вам просто нужно что-то более короткое, введите два варианта. Во-первых, вы можете импортировать java.lang.System как угодно, что-то более короткое, как "sys":
import java.lang.System as sys
sys.err.println("ERROR Will Robinson")
Во-вторых, вы можете назначить поток System.err переменной и использовать эту переменную отсюда в качестве псевдонима для System.err, например:
err = System.err
err.println("ERROR again Will Robinson")
Это имеет то преимущество, что все функции System.err доступны, поэтому вам не нужно подключать их по отдельности (например, err.print, err.println и т.д.).
Надеюсь, существует стандартный способ Groovy, потому что идиосинкратическое переименование может сбивать с толку людей, которые читают ваш код.