重定向javax.xml.ws和com.sun.xml.ws的输出日志

时间:2010-05-18 14:59:43

标签: java logging log4j jax-ws

我正在使用 Sun的Metro 开发基于SOAP的Web服务。

我正面临着一个令人烦恼的错误,每次我将一个格式错误的SOAP对象发送到我的网络服务时,sun的api垃圾邮件就像System.out那样带有这样的日志:

  

javax.xml.ws.WebServiceException:com.sun.istack.XMLStreamException2:org.xml.sax.SAXParseException:cvc-complex-type.4:属性'type'必须出现在元素'object'上。       at com.sun.xml.ws.util.pipe.AbstractSchemaValidationTube.doProcess(AbstractSchemaValidationTube.java:206)       at com.sun.xml.ws.util.pipe.AbstractSchemaValidationTube.processRequest(AbstractSchemaValidationTube.java:175)       在com.sun.xml.ws.api.pipe.Fiber .__ doRun(Fiber.java:595)       在com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:554)       在com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:539)       在com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:436)       at com.sun.xml.ws.server.WSEndpointImpl $ 2.process(WSEndpointImpl.java:243)       在com.sun.xml.ws.transport.http.HttpAdapter $ HttpToolkit.handle(HttpAdapter.java:444)       在com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244)       at com.sun.xml.ws.transport.http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:106)       at com.sun.xml.ws.transport.http.server.WSHttpHandler.handle(WSHttpHandler.java:91)       at com.sun.net.httpserver.Filter $ Chain.doFilter(Filter.java:65)       在sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:54)       at com.sun.net.httpserver.Filter $ Chain.doFilter(Filter.java:68)       at sun.net.httpserver.ServerImpl $ Exchange $ LinkHandler.handle(ServerImpl.java:555)       at com.sun.net.httpserver.Filter $ Chain.doFilter(Filter.java:65)       at sun.net.httpserver.ServerImpl $ Exchange.run(ServerImpl.java:527)       at sun.net.httpserver.ServerImpl $ DefaultExecutor.execute(ServerImpl.java:119)       at sun.net.httpserver.ServerImpl $ Dispatcher.handle(ServerImpl.java:349)       at sun.net.httpserver.ServerImpl $ Dispatcher.run(ServerImpl.java:321)       在java.lang.Thread.run(Thread.java:619)   引起:com.sun.istack.XMLStreamException2:org.xml.sax.SAXParseException:cvc-complex-type.4:属性'type'必须出现在元素'object'上。       at com.sun.xml.ws.util.xml.StAXSource $ 1.parse(StAXSource.java:185)       at com.sun.xml.ws.util.xml.StAXSource $ 1.parse(StAXSource.java:170)       at org.apache.xerces.jaxp.validation.ValidatorHandlerImpl.validate(未知来源)       at org.apache.xerces.jaxp.validation.ValidatorImpl.validate(未知来源)       在javax.xml.validation.Validator.validate(Validator.java:127)       at com.sun.xml.ws.util.pipe.AbstractSchemaValidationTube.doProcess(AbstractSchemaValidationTube.java:204)       ......还有20个

我想关闭此日志或将其重定向到log4j使用的 error / warn / debug.log 文件。

我尝试在 log4j.xml 文件中添加规则:

<category name="javax.xml.ws">
 <priority value="error" />
</category>

没用。

所以我尝试了以下技巧:

java.util.logging.Logger.getLogger("javax.xml.ws.WebServiceException").setLevel(
            java.util.logging.Level.OFF);

它既没有效果。

有什么想法吗?

这不是一个大问题,但它会让我的 catalina.log 变得更大&amp;更大,这不适合这种日志。

克里斯

1 个答案:

答案 0 :(得分:0)

最坏情况解决方案:

System.setOut(new PrintStream(new FileOutputStream("debug.log")));