/**
   * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse,
   *     javax.servlet.FilterChain)
   */
  @Override
  public void doFilter(
      final ServletRequest pRequest, final ServletResponse pResponse, final FilterChain pChain)
      throws IOException, ServletException {

    final IListener listener = this.requestMonitor.getListener();
    listener.onStart((HttpServletRequest) pRequest);
    try {
      pChain.doFilter(pRequest, pResponse);

    } catch (IOException | ServletException e) {
      WebLog.tracer(WebLogFilter.class).exception(e);
      throw e;
    } catch (RuntimeException | Error e) {
      WebLog.tracer(WebLogFilter.class).exception(e);
      throw e;
    } catch (final Throwable e) {
      WebLog.tracer(WebLogFilter.class).exception(e);
      throw new ServletException(e);
    } finally {
      listener.onFinish();
    }
  }
 /** @see javax.servlet.Filter#init(javax.servlet.FilterConfig) */
 @Override
 public void init(@SuppressWarnings("unused") final FilterConfig pFilterConfig) {
   WebLog.init(this.requestMonitor);
 }