2013-08-02 2 views
1

StackTrace предоставляет класс, метод, номер строки в исходном файле.StacktraceElement с меткой времени

Есть ли способ получить отметку времени, в которой был выполнен метод?

+0

Добавление меток времени будет делать каждый вызов метода 10x медленнее или более. Зачем тебе это нужно знать? –

+0

Это даст нам представление о 1. Порядок выполнения 2. Время между вызовами –

+0

Порядок выполнения определяется порядком стека. Вам не нужно отмечать эти отметки. Время между вызовами обычно более полезно для вызовов на одном уровне. Если вы хотите создать временную отметку на разных этапах вашего приложения, у меня есть перечисление фаз временной метки и добавьте временную метку в массив длиной, когда эта фаза будет достигнута. В конце я анализирую это, чтобы посмотреть, что такое гистограмма таймингов, чтобы увидеть, где происходят самые длительные задержки. –

ответ

1

Не знаю, так как API не дает вам доступ к метке времени. Ни Exception, ни API StatckTraceElement.

Вы можете использовать протоколирование (например, log4j) и зарегистрировать исключение. Запись журнала может печатать временную метку записи журнала. Конечно, это временная метка, когда запись была зарегистрирована, а не когда исключение возникло, но если вы регистрируете сразу после исключения, это не должно иметь большое значение.

0

JVM не отслеживает выполнение инструкции. Следовательно, трассировка стека не будет иметь такой информации. Вы можете изменить свой Java-код, чтобы иметь такую ​​функцию. Вот продукт, который вы должны попробовать - Chronon Time travelling debugger. (я его никогда не использовал)

0

Вы не можете получить отметку времени от StackTrace.
Вы можете использовать java.util.logging api или log4j.
Выберите один из них на основании вашего требования к заявке.
Пожалуйста, смотрите в
java.util.logging vs log4j

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