Подтвердить что ты не робот

Как перенаправить вывод на stderr в groovy?

Я ищу способ перенаправления вывода в groovy script на stderr:

catch(Exception e) {
    println "Want this to go to stderr"
}
4b9b3361

Ответ 1

Сверху моей головы вы не могли бы сделать немного самопровода:

def printErr = System.err.&println
printErr("AHHH")

но это немного ручное

Ответ 2

Другая довольно компактная альтернатива такова:

System.err << "Want this to go to stderr"

Или вы можете добавить это в начало своего script

def err = System.err
...
err << "Want this to go to stderr"

что я теперь делаю в своих сценариях оболочки groovy

Ответ 3

Groovy имеет доступ к JRE:

System.err.println "goes to stderr"

Хотя может быть более Groovy -fied way...

Ответ 4

Если вам просто нужно что-то более короткое, введите два варианта. Во-первых, вы можете импортировать 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, потому что идиосинкратическое переименование может сбивать с толку людей, которые читают ваш код.