我正在寻找一种方法将groovy脚本中的输出重定向到stderr:
catch(Exception e) {
println "Want this to go to stderr"
}
答案 0 :(得分:22)
就在我的头顶,你不能做一些自我布线:
def printErr = System.err.&println
printErr("AHHH")
但这有点手动
答案 1 :(得分:19)
另一个相当紧凑的替代方案是:
System.err << "Want this to go to stderr"
或者您可以在脚本顶部添加此内容
def err = System.err
...
err << "Want this to go to stderr"
这就是我现在在我的groovy shell脚本中所做的事情
答案 2 :(得分:17)
Groovy可以访问JRE:
System.err.println "goes to stderr"
虽然可能有更多以Groovy风格的方式......
答案 3 :(得分:1)
如果您只想输入更短的内容,可以选择以下两种方法。首先,您可以将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方式,因为特殊的重命名可能会让阅读代码的人感到困惑。