Я недавно унаследовал веб-приложение J2EE Struts, которое было написано еще в 2002 году. В приложении нет регистрации, кроме нечетного System.out.println ().
Я добавил log4j, чтобы я мог записать некоторую информацию на консоль, но я обеспокоен тем, как лучше к этому подойти. Любые предложения, советы, лучшие практики будут приветствоваться, так как я не хочу тратить слишком много времени на добавление журналов в каждый метод или класс (или на поиск мест, где журналирование будет лучше всего - например, блоки / дефекты плохого кода).
Мой текущий подход состоит в том, чтобы просто добавить журналирование к нескольким классам, на которые я смотрел, чтобы понять код, но есть ли несколько ключевых мест, где я могу добавить журналирование, чтобы максимально использовать мое добавление log4j?
Edit:
Обновление прогресса:
Я расширил Struts (v.1) ExceptionHandler
и настроил struts-config.xml
для использования моего CustomExceptionHandler
вместо версии Struts. Затем, переопределив метод execute()
, я добавил логику для регистрации исключения, используя log4j
. Смотрите ниже:
public class CustomExceptionHandler extends ExceptionHandler {
static Logger logger = Logger.getLogger(CustomExceptionHandler.class);
public ActionForward execute(Exception ex, ExceptionConfig ae, ActionMapping mapping, ActionForm formInstance, HttpServletRequest request, HttpServletResponse response) throws ServletException {
logException(ex);
return super.execute(ex, ae, mapping, formInstance, request, response);
}
private void logException(Throwable thr) {
// Add code here to log the exception appropiately
// i.e. logger.error("Exception is: " + ex.getMessage());
}
Также необходимо обновить файл struts-config.xml:
<global-exceptions><br>
<exception key="" type="java.lang.Throwable"
handler="com.mycompany.CustomExceptionHandler" /><br>
</global-exceptions>
Теперь я могу быть уверен, что буду всегда соответствующим образом регистрировать любые исключения.
Для исключений, которые были съедены, я заключаю их в непроверенные исключения, чтобы они добрались до вершины:
} catch (Exception e) {
//nothing here
}
Изменено на:
} catch (Exception e) {
throw new RuntimeException(e);
}