Как перенаправить вывод в stderr в groovy? - PullRequest
29 голосов
/ 19 декабря 2008

Я ищу способ перенаправить вывод в Groovy скрипте на stderr:

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

Ответы [ 4 ]

22 голосов
/ 20 декабря 2008

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

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

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

19 голосов
/ 09 декабря 2010

Еще одна довольно компактная альтернатива это:

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

Или вы можете добавить это вверху вашего скрипта

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

, что я сейчас и делаю в своих скриптах оболочки

17 голосов
/ 19 декабря 2008

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

System.err.println "goes to stderr"

Хотя, возможно, есть и более продвинутый способ ...

1 голос
/ 15 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...