我想使用groovy实现以下目标:
println
语句
println
语句以在标准输出上打印(在我的情况下是控制台)。println
语句。是否有任何东西(比如groovy方面,log4j控制台appender等),我可以使用所有println
语句预先设置时间?
答案 0 :(得分:3)
元编程。您可以让PrintStream.metaClass.invokeMethod拦截对println方法的调用,并将日期添加到传入的字符串中。
像这样的东西,改编自Subramaniam" Programming Groovy"中的示例代码:
System.out.metaClass.invokeMethod = {String name, args ->
def validMethod = System.out.metaClass.getMetaMethod(name, args)
if (! validMethod)
{
return System.out.metaClass.invokeMissingMethod(delegate,name,args)
}
if ( validMethod.name == 'println')
{
args[0] = "${(new Date()).toString()} : ${args[0]}".toString()
}
validMethod.invoke(delegate,args)
}