如何在eclipse中打印当前执行的方法名称?

时间:2015-01-18 03:57:17

标签: java eclipse

在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功能一样。

1 个答案:

答案 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