Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java有没有办法获得当前的文件名和行号? 在C++中,源代码和当前行数的文件由文件和内联< /强>决定,在编译时决定,java中有没有方法可以做类似的事情?文件和行号是在编译时而不是运行时决定的?这将便于记录。我有点怀疑使用运行时方法检测这些信息会降低性能。_Java_File_Logging - Fatal编程技术网

Java有没有办法获得当前的文件名和行号? 在C++中,源代码和当前行数的文件由文件和内联< /强>决定,在编译时决定,java中有没有方法可以做类似的事情?文件和行号是在编译时而不是运行时决定的?这将便于记录。我有点怀疑使用运行时方法检测这些信息会降低性能。

Java有没有办法获得当前的文件名和行号? 在C++中,源代码和当前行数的文件由文件和内联< /强>决定,在编译时决定,java中有没有方法可以做类似的事情?文件和行号是在编译时而不是运行时决定的?这将便于记录。我有点怀疑使用运行时方法检测这些信息会降低性能。,java,file,logging,Java,File,Logging,您可以使用 System.out.println(Thread.currentThread().getStackTrace()[1]); 输出包括当前方法和行号(如果调试是在中编译的)。 比如说, com.stackoverflow.Main.main(Main.java:23) 可能重复的Take at at using services,它允许您以日志格式指定文件和行号(以及其他信息),这些文件和行号可以打印到屏幕上或写入文件。William Price,感谢您提供的信息,非常有用New

您可以使用

System.out.println(Thread.currentThread().getStackTrace()[1]);
输出包括当前方法和行号(如果调试是在中编译的)。 比如说,

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

可能重复的Take at at using services,它允许您以日志格式指定文件和行号(以及其他信息),这些文件和行号可以打印到屏幕上或写入文件。William Price,感谢您提供的信息,非常有用New Throwable().getStackTrace()这不是一个昂贵的操作吗?@dkatzel这是一种获取当前文件名和行号的方法;我不是说它的“效率.系统.输出.打印LN(Thread.currentThread().getStackTrace()[1]);我已经测试过了,它似乎会扫描调用堆栈,但性能不如我预期的好