32

Groovy スクリプトの出力を stderr にリダイレクトする方法を探しています。

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

4 に答える 4

24

私の頭のてっぺんから、あなたは少し自己配線をすることができませんでした:

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

しかし、それは少し手動です

于 2008-12-19T21:07:32.510 に答える
20

Groovy は JRE にアクセスできます。

System.err.println "goes to stderr"

もっとグルーヴィーな方法があるかもしれませんが...

于 2008-12-19T19:24:20.987 に答える
19

別の非常にコンパクトな代替手段は次のとおりです。

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

または、これをスクリプトの先頭に追加することもできます

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

これは、Groovy シェル スクリプトで現在行っていることです。

于 2010-12-09T14:00:15.277 に答える
1

入力する文字を短くしたい場合は、次の 2 つのオプションがあります。まず、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 の方法があることを願っています。独特な名前の変更は、コードを読む人を混乱させる可能性があるためです。

于 2009-03-14T21:09:14.733 に答える