In Zuul if exception happened during filtering, routing, etc -- this exception can be logged by error filter. (For more details see com.netflix.zuul.http.ZuulServlet). Currently if exception happens, for example, in preroute part it is not logged anywhere. I propose to add simple error filter that is able to log such exceptions. Thanks.

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ZuulErrorLoggingFilter extends ZuulFilter {

    private final Logger logger = LoggerFactory.getLogger(getClass());

    @Override
    public String filterType() {
        return "error";
    }

    @Override
    public int filterOrder() {
        return 0;
    }

    @Override
    public boolean shouldFilter() {
        return RequestContext.getCurrentContext().getThrowable() != null;
    }

    @Override
    public Object run() {
        Throwable throwable = RequestContext.getCurrentContext().getThrowable();
        logger.error("Exception was thrown in filters: ", throwable);
        return null;
    }
}

Comment From: spencergibb

Pull Requests welcome!

Comment From: Aloren

@spencergibb Please review the following PR Thanks!

Comment From: spencergibb

@Aloren looks like I ended up with something similar to your PR, sorry it took me so long to understand.

Comment From: Aloren

@spencergibb Looks even better than my initial pull request. Thanks!

Comment From: umamaheswarreddy

thanks :)

Comment From: AlekseyVasilenko89

Анастасия здравствуйте. Нужна помощь по вашему решению, оно у меня не работает(. Что ещё нужно добавить. Может этот фильтр надо зарегистрировать или добавить конфигурацию.