Ant*_*s42 14 jboss error-logging exception-handling jax-rs resteasy
我正在运行一个Jboss服务器,其中包括一个JAX-RS Web服务(使用与Jboss/EAP捆绑在一起的resteasy-2.3.6.Final).
当客户端中止与服务器的呼叫时,RestEasy的SynchronousDispatcher可以(显然)不发送响应返回给其造成了一堆错误的在客户端[SEVERE]和[ERROR]水平在我的服务器日志显示出来.
但是,我不认为这些是实际错误,所以我不想看到它们.特别是一旦服务将被公开使用,这必然会发生.
这是我想要抑制的日志输出:
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]
...
Run Code Online (Sandbox Code Playgroud)
有一种优雅的方式吗?
通过写我自己, ExceptionMapper我设法阻止第一个(the [SEVERE])并将其转换为调试级别的单行日志输出,但第二个仍然存在.坦率地说,我不知道从哪里开始寻找.
我在另一个SO问题中看到,我可以设置一个或两个类的日志级别,将错误提升到更高的级别,比如说[FATAL],但我认为这更像是一种解决方法......
想法?
小智 1
在 JBoss Standalone.xml 配置文件中,转到日志记录子系统(例如,
<subsystem xmlns="urn:jboss:domain:logging:1.5">如果您使用的是 EAP 6.4.0,则通过搜索),然后为要抑制错误的类别添加记录器。对于您的示例,如果您想抑制 org.jboss.resteasy 的日志,那么您的记录器将如下所示
<logger category="org.jboss.resteasy">
<level name="OFF"/>
</logger>
Run Code Online (Sandbox Code Playgroud)
将级别设置为 OFF 应该会禁止记录器记录包 org.jboss.resteasy 中的错误
| 归档时间: |
|
| 查看次数: |
1283 次 |
| 最近记录: |