在eclipse中执行Java程序时如何打印当前正在执行的方法名?
例如:
public class Bits {
public static void main(String[] args) {
System.out.println("method:main");
int result=TotSum(24,35);
System.out.println("total sum:" + result);
}
private static int TotSum(int i, int j) {
System.out.println("method:TotSum");
return (i+j);
}
}
输出:
方式:主
方式:TotSum
总和:59
在eclipse中是否可以自动打印当前正在执行的方法名称(而不是像以下代码那样在每个方法中使用硬编码的sysout语句或logger语句)?
public class Bits {
public static void main(String[] args) {
int result=TotSum(24,35);
System.out.println("total sum:" + result);
}
private static int TotSum(int i, int j) {
return (i+j);
}
}
Getting the name of the current executing method
此问题的所有答案都建议在程序中添加一些代码。
但我的问题是找出当前正在执行的方法而不添加任何代码。
就像Java的eclipse功能一样。
答案 0 :(得分:6)
您可能希望使用Log4J2之类的日志记录系统。它有configuration的许多选项,包括打印方法的名称。然后你可以使用:
public class Bits {
private static final Logger logger = LogManager.getLogger(Bits.class);
public static void main(String[] args) {
logger.info("Starting");
int result=TotSum(24,35);
logger.info("total sum:" + result);
}
private static int TotSum(int i, int j) {
logger.info("method:TotSum");
return (i+j);
}
}
它会打印出类似的东西(取决于你的pattern):
foo.bar.Bits.main Starting
foo.bar.Bits.TotSum method:TotSum
foo.bar.Bits.main total sum:59
否则,您可以使用this answer之类的方法。以下代码将打印方法的名称:
System.out.println(Thread.currentThread().getStackTrace()[1].getMethodName());
或者您可以使用AOP,例如this answer。