如何在groovy中将输出重定向到stderr?

时间:2008-12-19 19:17:07

标签: java scripting groovy

我正在寻找一种方法将groovy脚本中的输出重定向到stderr:

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

4 个答案:

答案 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方式,因为特殊的重命名可能会让阅读代码的人感到困惑。