2014-12-19 2 views
3

В C++ файл с исходным кодом и номером текущей строки определяется FILE и INLINE, который решен во время компиляции, есть ли какой-либо метод на Java, который мог бы сделать подобное? Номер файла и строки определяется во время компиляции вместо времени выполнения? это будет удобно для журнала. Я сомневаюсь, что использование метода runtime для обнаружения этих данных приведет к снижению производительности.Есть ли способ, которым Java может получить текущее имя файла и текущий номер строки?

+1

возможно дубликат [Как получить файл имя-источник/линейный номер от объекта java.lang.Class] (http://stackoverflow.com/questions/7483421/how-to -get-source-file-name-line-number-from-a-java-lang-class-object) –

+1

Взгляните на использование журнала [Apache logging] (http://logging.apache.org/log4j/2.0/ manual/layouts.html), который позволяет указать номер файла и строки (среди других частей информации) в формате журнала, который можно распечатать на экране или записать в файл. –

+0

William Price, Спасибо за информацию, очень полезен – python

ответ

1

Вы можете использовать Thread.getStackTrace() и что-то вроде

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

выхода включает в себя способом и строка номера текущего (если отладка была составлена ​​в). Например,

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

новый Throwable(). GetStackTrace() будет более эффективным – auntyellow

+0

Не правда ли, что это дорогая операция? – dkatzel

+0

@dkatzel Это способ получить текущее имя файла и номер строки; Я говорю не о своей «эффективности». –

Смежные вопросы