【问题标题】:JAX RS WebApplicationException do not logJAX RS WebApplicationException 不记录
【发布时间】:2016-04-01 01:24:02
【问题描述】:

我将一个 bean 注入到我的 REST Web 服务中,然后从我的 bean 中调用一个方法,在该方法中引发以下异常:

throw new WebApplicationException(Response.status(Response.Status.NOT_FOUND)).build());

孔堆栈跟踪被打印。如何避免打印?

【问题讨论】:

    标签: jboss jax-rs wildfly java-ee-7


    【解决方案1】:

    老问题,但也许有人仍然需要这个问题的答案:

    您可以为此使用 ExceptionMapper。这是我们使用的:

    package at.chex.archichexture.exceptions;
    
    import javax.inject.Inject;
    import javax.ws.rs.WebApplicationException;
    import javax.ws.rs.core.Response;
    import javax.ws.rs.ext.ExceptionMapper;
    import javax.ws.rs.ext.Provider;
    import org.slf4j.Logger;
    
    /**
     * @author cheX GmbH Austria {@literal chex@chex.at}
     * @author Jakob Galbavy {@literal jg@chex.at}
     * @since 19.06.18
     */
    @Provider
    public class WebApplicationExceptionMapper implements ExceptionMapper<WebApplicationException> {
    
      @Inject
      private Logger log;
    
      @Override
      public Response toResponse(WebApplicationException webApplicationException) {
        int status = webApplicationException.getResponse().getStatus();
        if (status >= 400 && status < 500) {
          log.warn("Returning Error ({}): {}", status, webApplicationException.getLocalizedMessage());
        } else {
          log.error("Exception in Webservice {}", status, webApplicationException);
        }
        return webApplicationException.getResponse();
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多