Exception handling 中止的Ajax调用在服务器日志中提供ClientBortException/Breaked管道:如何捕获/抑制?

Exception handling 中止的Ajax调用在服务器日志中提供ClientBortException/Breaked管道:如何捕获/抑制?,exception-handling,jboss,jax-rs,resteasy,error-logging,Exception Handling,Jboss,Jax Rs,Resteasy,Error Logging,我正在运行一个Jboss服务器,其中包括一个JAX-rsweb服务(使用与Jboss/EAP捆绑的resteasy-2.3.6.Final) 当客户端中止对服务器的调用时,ResteasySynchronousDispatcher显然无法将响应发送回客户端,这会导致[严重]和[错误]级别的大量错误显示在我的服务器日志中 但是,我不认为这些是实际的错误,所以我不想看到它们。尤其是一旦该服务被公众使用,这种情况必然会经常发生 以下是我要抑制的日志输出: 12:50:38,938 SEVERE [or

我正在运行一个Jboss服务器,其中包括一个JAX-rsweb服务(使用与Jboss/EAP捆绑的resteasy-2.3.6.Final)

当客户端中止对服务器的调用时,Resteasy
SynchronousDispatcher
显然无法将响应发送回客户端,这会导致
[严重]
[错误]
级别的大量错误显示在我的服务器日志中

但是,我不认为这些是实际的错误,所以我不想看到它们。尤其是一旦该服务被公众使用,这种情况必然会经常发生

以下是我要抑制的日志输出:

12:50:38,938 SEVERE [org.jboss.resteasy.core.SynchronousDispatcher] (http-localhost/127.0.0.1:8080-2) Failed executing GET /ajax/findPerson: org.jboss.resteasy.spi.WriterException: ClientAbortException:  java.net.SocketException: Broken pipe
    at org.jboss.resteasy.core.ServerResponse.writeTo(ServerResponse.java:262) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
    ....

Caused by: ClientAbortException:  java.net.SocketException: Broken pipe
    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:403) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:356) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:426) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:415) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    ...

Caused by: java.net.SocketException: Broken pipe
    at java.net.SocketOutputStream.socketWrite0(Native Method) [rt.jar:1.7.0_51]
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113) [rt.jar:1.7.0_51]
    at java.net.SocketOutputStream.write(SocketOutputStream.java:159) [rt.jar:1.7.0_51]
    at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:711) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:450) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:351) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    ...

12:50:38,942 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/myapplication].[MyAjaxApplication]] (http-localhost/127.0.0.1:8080-2) JBWEB000236: Servlet.service() for servlet MyAjaxApplication threw exception: java.lang.IllegalStateException
    at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:392) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:152) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1]
    ...
有没有一种优雅的方法可以做到这一点

通过
ExceptionMapper
我成功地阻止了第一个(严重的)),并将其转换为调试级别的一行日志输出,但第二个仍然存在。坦率地说,我甚至不知道从哪里开始寻找

我在另一个问题中看到,比如说<代码> [致命] <代码>,但我会认为这更像是一个解决办法…


想法?

在JBoss standalone.xml配置文件中,转到日志子系统(例如,通过搜索
如果您使用的是EAP 6.4.0),然后为要抑制错误的类别添加记录器。例如,如果您想要抑制org.jboss.resteasy的日志,那么您的日志记录器如下

<logger category="org.jboss.resteasy">
    <level name="OFF"/>
</logger>


将level设置为OFF将禁止记录器在包org.jboss.resteasy中记录错误

,但这样我就不会得到任何resteasy日志记录。即使在有问题的类(“SynchronousDispatcher”)的级别,我也希望抑制这一个异常,而不是该类的所有日志输出。