Je cherche un moyen de rediriger la sortie dans un script groovy à stderr:Comment rediriger la sortie vers stderr dans groovy?
catch(Exception e) {
println "Want this to go to stderr"
}
Je cherche un moyen de rediriger la sortie dans un script groovy à stderr:Comment rediriger la sortie vers stderr dans groovy?
catch(Exception e) {
println "Want this to go to stderr"
}
Situé juste à côté du haut de ma tête ne pouvait pas vous faire un peu d'auto-câblage:
def printErr = System.err.&println
printErr("AHHH")
mais c'est un peu manuel
Groovy a accès au JRE:
System.err.println "goes to stderr"
Bien qu'il puisse y avoir un moyen plus Groovy-fiée ...
Oui, j'espérais une façon groovy. – timdisney
Si vous voulez juste quelque chose de plus court à taper, voici deux options. Tout d'abord, vous pouvez importer java.lang.System comme tout ce que vous aimez, en particulier quelque chose de plus court comme « sys »:
import java.lang.System as sys
sys.err.println("ERROR Will Robinson")
Deuxièmement, vous pouvez affecter le flux System.err à une variable et utiliser cette variable à partir de là comme un alias pour System.err, comme:
err = System.err
err.println("ERROR again Will Robinson")
Ceci a l'avantage possible que toutes les fonctions de System.err sont accessibles afin que vous ne devez pas câbler chacun individuellement (par exemple err.print, err.println, etc.).
Espérons qu'il existe une méthode Groovy standard, car un changement de nom idiosyncratique peut être source de confusion pour les personnes qui lisent votre code.
Une autre alternative assez compact est le suivant:
System.err << "Want this to go to stderr"
Ou vous pouvez ajouter ceci au début de votre script
def err = System.err
...
err << "Want this to go to stderr"
qui est ce que je fais maintenant dans mes scripts Groovy shell
Il est même possible de redéfinir println: ('def println = System.err. & Println') - utile au début d'un script qui écrit des résultats sur stdout par quelque chose comme' foo.write (System.in) ' – sfussenegger
Ceci jette un 'MissingMethodException' s'il est utilisé avec un GString. Par exemple cela ne fonctionne pas: 'printErr" Problème avec: $ aVariable "' –
Comme cette réponse est probablement grossièrement obsolète, je l'ai rendue modifiable par la communauté. – codeLes