GAE, как увидеть производственные исключения? - PullRequest
2 голосов
/ 12 апреля 2010

Я получаю сообщение об ошибке в производственной среде, но не в локальной. Есть ли способ увидеть исключение, которое, вероятно, выбрасывается из производства? В tomcat - пользователь сможет увидеть исключение, когда сервлет вернет свой вывод

1 Ответ

6 голосов
/ 12 апреля 2010

Вы (администратор) можете видеть исключение (включая полную трассировку стека) в средстве просмотра журнала на консоли администратора.

Если вы хотите отобразить трассировку стека исключений для своих пользователей, вы можете установить фильтр сервлетов, который перехватывает все и печатает трассировку стека в потоке ответов (вы должны также зарегистрировать его как SEVERE, чтобы он по-прежнему отображался в журнале).

Примерно так:

public class ExceptionLogger implements Filter {

    @Override
    public void init(FilterConfig config) throws ServletException {
    }

    @Override
    public void destroy() {
    }

    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1,
        FilterChain arg2) throws IOException, ServletException {

        try{
           arg2.doFilter(arg0, arg1);
        } catch (Exception e) {
           Logger.getLogger("ExceptionLogger").log(Level.SEVERE,
              "request failed with an exception", e);
           e.printStacktrace(arg1.getWriter());
        }
    }
}

И вы можете настроить его на фильтрацию всех страниц в web.xml с помощью URL-шаблона "*".

PS: Tomcat отсутствует, GAE / J использует Jetty.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...