在groovy应用程序中获取StackTraceElement

时间:2014-07-30 21:25:26

标签: groovy

我有一段代码打印当前的java文件以供日志记录。

final StackTraceElement stackTraceElement = new Throwable().fillInStackTrace().getStackTrace()[2];
final String parentClassName = stackTraceElement.getFileName().replaceAll(".java", "");
final int lineNumber = stackTraceElement.getLineNumber();

我在groovy中写了一些东西,使用上面的代码打印日志,大部分时间都可以使用,但是经过几次运行后我才开始获得NPE

java.lang.NullPointerException
        at com.bla.general.util.log.LogUtils.generateLogMessage(LogUtils.java:140)
        at com.bla.general.util.log.LogUtils.info(LogUtils.java:67)
        at sun.reflect.GeneratedMethodAccessor831.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
        at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:43)
        at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.call(StaticMetaMethodSite.java:88)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
        at com.bla.AppVersionServiceImpl.getAppVersion(AppVersionServiceImpl.groovy:47)

当以下行是发起人时:

LogUtils.info("Trying to get details for device hash ${deviceHash}");

我使用tomcat和java 1.7作为我的堆栈。重启Tomcat后,事情恢复正常。 这是我对动态JVM世界的第一次努力。如果你能开导我,我会很感激

1 个答案:

答案 0 :(得分:0)

我在http://groovy.329449.n5.nabble.com/Getting-StackTraceElement-in-groovy-application-td5720649.html

上得到了完整的答案

Jochen回答“blackdrag”Theodorou