Groovy スクリプトの出力を stderr にリダイレクトする方法を探しています。
catch(Exception e) {
println "Want this to go to stderr"
}
私の頭のてっぺんから、あなたは少し自己配線をすることができませんでした:
def printErr = System.err.&println
printErr("AHHH")
しかし、それは少し手動です
Groovy は JRE にアクセスできます。
System.err.println "goes to stderr"
もっとグルーヴィーな方法があるかもしれませんが...
別の非常にコンパクトな代替手段は次のとおりです。
System.err << "Want this to go to stderr"
または、これをスクリプトの先頭に追加することもできます
def err = System.err
...
err << "Want this to go to stderr"
これは、Groovy シェル スクリプトで現在行っていることです。
入力する文字を短くしたい場合は、次の 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 の方法があることを願っています。独特な名前の変更は、コードを読む人を混乱させる可能性があるためです。