Comment rediriger la sortie vers stderr dans groovy?
je cherche un moyen de rediriger la sortie dans un script groovy vers stderr:
catch(Exception e) {
println "Want this to go to stderr"
}
4 réponses
Juste à côté du haut de ma tête que vous ne pourriez pas faire un peu d'auto-câblage:
def printErr = System.err.&println
printErr("AHHH")
mais c'est un peu manuel
System.err << "Want this to go to stderr"
Ou vous pouvez l'ajouter en haut de votre script
def err = System.err
...
err << "Want this to go to stderr"
ce qui est ce que je fais maintenant dans mes scripts de shell groovy
Groovy a accès à la JRE:
System.err.println "goes to stderr"
bien qu'il puisse y avoir une façon plus Groovy-fied...
Si vous voulez quelque chose de plus court à taper, voici deux options. Tout d'abord, vous pouvez importer java.lang.Système de ce que vous voulez, plus précisément quelque chose de plus court comme "sys":
import java.lang.System as sys
sys.err.println("ERROR Will Robinson")
ensuite, vous pouvez affecter le Système.err flux à une variable et utiliser cette variable à partir de là comme un alias pour le Système.err, de la forme:
err = System.err
err.println("ERROR again Will Robinson")
Cela a l'avantage possible que toutes les fonctions du Système.les RRE sont accessibles, donc vous n'avez pas à les brancher individuellement. (par exemple err.imprimer, tre.println, etc.).
espérons qu'il y ait une manière Groovy standard, parce que le renommage idiosyncratique peut être déroutant pour les gens qui lisent votre code.