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