【问题标题】:Is there any way that Java could get current file name and current line number?Java有什么办法可以获取当前文件名和当前行号?
【发布时间】:2014-12-19 03:57:58
【问题描述】:

在C++中,源代码的文件和当前行号是由FILE和INLINE决定的,这是在编译时决定的,Java中有什么方法吗可以做类似的事情吗?文件和行号是在编译时而不是运行时决定的?这将方便日志。我有点怀疑使用运行时方法来检测这些信息会降低性能。

【问题讨论】:

标签: java file logging


【解决方案1】:

你可以使用Thread.getStackTrace() 和类似的东西

System.out.println(Thread.currentThread().getStackTrace()[1]);

输出包括当前方法和行号(如果已编译调试)。 例如,

com.stackoverflow.Main.main(Main.java:23)

【讨论】:

  • new Throwable().getStackTrace() 会更高效
  • 这不是一项昂贵的操作吗?
  • @dkatzel 这是一种获取当前文件名和行号的方法;我说的不是它的效率。
  • System.out.println(Thread.currentThread().getStackTrace()[1]);我已经测试过了,看来这会扫描调用堆栈,它的性能没有我预期的那么好
猜你喜欢
  • 2023-03-18
  • 1970-01-01
  • 2013-02-06
  • 1970-01-01
  • 1970-01-01
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多