Предположим, что у нас есть абстрактный класс с методом, который печатает запись WARN log (ПРЕДУПРЕЖДЕНИЕ: невозможно установить заголовок. Ответ уже сделан), этот метод вызывается классом X много раз (это наводнение журналов).Как определить, какой класс вызывает конкретный метод?
Основываясь на записи журнала, которая была сгенерирована на сервере приложений, мне удалось идентифицировать абстрактный класс и найти его банку (используя jarscan), JAR - это компонент OOTB сервера приложений, поэтому он не должен быть изменен в любом смысле. Я взломал БАНКУ и ввел линию в методе, который генерирует запись журнала:
new Exception().printStackTrace()
Этот подход должен дать мне трассировки стека для определения класса X.
Однако, я не знаю, как чтобы воспроизвести эту ошибку в моей тестовой среде, есть много проектов, которые у меня нет в моей рабочей области, и я не могу просто проверить сотни классов, чтобы увидеть, какой из них что-то устанавливает в объект ответа, я попытался найти совпадение между метками времени журнала и отчетами о тестировании Selenium, которые работают с тестовой средой, но не отображаются в журналах.
Вопрос: Что было бы хорошим способом устранения неполадок для определения класса X без каких-либо навязчивых изменений в среде, которая представляет проблему?
см. Thread.currentThread(), Thread.dumpStack() и Thread.getStackTrace() – ControlAltDel
Возможный дубликат [Что такое отладчик и как он может помочь мне диагностировать проблемы] (http://stackoverflow.com/questions/ 25385173/what-is-a-debugger-and-how-can-it-help-me-diagnose-problems) – Raedwald
Используйте отладчик. 1. Поместите точку останова на метод. 2. Запустите программу. 3. Посмотрите на стек, когда программа остановится в точке останова. – Raedwald