どこかのライブラリがエラー出してるっぽいんだけど、誰が出してるのかさっぱりわからない時
なんかしらないけどやたらとエラーメッセージがでるが、どこの誰が出しているのかさっぱりわからないという時、ありますよね。
そんな時は諦めて jar の中を grep してしまうのがいいかもしれないですね。
find . -name '*.jar' -exec zipgrep 'Woot! something failed' {} \;
System.out を差し替えてしまうというのもひとつの手かも。
class Foo extends PrintStream {
@Delegate PrintStream ps;
public Foo(PrintStream ps) {
super(ps, true)
this.ps = ps;
}
}
def decorateMethodsWithLogging(clazz) {
def mc = clazz.metaClass
mc.invokeMethod = { String name, args ->
println "===========> $name, args = $args <=========="
org.codehaus.groovy.runtime.StackTraceUtils.sanitize(new Exception()).printStackTrace()
println "===========< $name, args = $args >=========="
return mc.getMetaMethod(name, args).invoke(delegate, args)
}
}
decorateMethodsWithLogging(Foo.class)
def foo = new Foo(System.out)
System.setOut(foo)
System.out.println("HAH")
Published: 2015-06-02(Tue) 06:33