@CompileStatic
class LogUtils {
// can be called the Groovy or Java way
public static String getCurrentMethodName(){
StackTraceElement[] stackTrace = StackTraceUtils.sanitize(new Throwable()).stackTrace
stackTrace[2].methodName != 'jlrMethodInvoke' ? stackTrace[2].methodName : stackTrace[3].methodName
}
}
5条答案
按热度按时间6yjfywim1#
输出:
qlckcl4x2#
Groovy的StackTraceUtils.sanitize怎么样?下面是一个简单的例子:
将上述内容粘贴到独立脚本
test.groovy
中时,输出如下:sanitize方法从跟踪中过滤掉所有Groovy内部的胡言乱语,干净的跟踪和
...stackTrace.find { }
应该会给予您一个不错的开始。zmeyuzjn3#
您可以通过stacktrace访问它,我已经能够通过以下方式获得它:
smdncfj34#
eufgjt7s5#
今天有几种方法可以做到这一点。
请参阅:https://www.baeldung.com/java-name-of-executing-method
在我的案例中,最有效的方法是:
new Object(){}.getClass().getEnclosingMethod().getName();