我正在寻找一种将 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"
虽然可能有一种更 Groovy 的方式......
另一个非常紧凑的替代方案是:
System.err << "Want this to go to stderr"
或者您可以在脚本顶部添加它
def err = System.err
...
err << "Want this to go to stderr"
这就是我现在在我的 groovy shell 脚本中所做的
如果您只想输入更短的内容,这里有两个选项。首先,你可以将 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 方式,因为特殊的重命名可能会让阅读您的代码的人感到困惑。