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

重定向javax.xml.ws和com.sun.xml.ws的输出日志,java,logging,log4j,jax-ws,Java,Logging,Log4j,Jax Ws,我正在与Sun的Metro一起开发一个基于SOAP的web服务 我面临着一个恼人的错误,每次我向我的web服务发送一个格式错误的SOAP对象时,sun的api都会向系统发送垃圾邮件。日志如下: javax.xml.ws.WebServiceException:com.sun.istack.XMLStreamException2:org.xml.sax.SAXParseException:cvc复杂类型。4:属性“type”必须出现在元素“object”上。 位于com.sun.xml.ws.ut

我正在与Sun的Metro一起开发一个基于SOAP的web服务

我面临着一个恼人的错误,每次我向我的web服务发送一个格式错误的SOAP对象时,sun的api都会向系统发送垃圾邮件。日志如下:

javax.xml.ws.WebServiceException:com.sun.istack.XMLStreamException2:org.xml.sax.SAXParseException:cvc复杂类型。4:属性“type”必须出现在元素“object”上。 位于com.sun.xml.ws.util.pipe.AbstractSchemaValidationTube.doProcess(AbstractSchemaValidationTube.java:206) 位于com.sun.xml.ws.util.pipe.AbstractSchemaValidationTube.processRequest(AbstractSchemaValidationTube.java:175) 位于com.sun.xml.ws.api.pipe.Fiber.\uu doRun(Fiber.java:595) 位于com.sun.xml.ws.api.pipe.Fiber.\u-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) 位于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) 位于com.sun.xml.ws.transport.http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:106) 位于com.sun.xml.ws.transport.http.server.WSHttpHandler.handle(WSHttpHandler.java:91) 位于com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65) 位于sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:54) 位于com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:68) 位于sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:555) 位于com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65) 位于sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:527) 位于sun.net.httpserver.ServerImpl$DefaultExecutor.execute(ServerImpl.java:119) 位于sun.net.httpserver.ServerImpl$Dispatcher.handle(ServerImpl.java:349) 位于sun.net.httpserver.ServerImpl$Dispatcher.run(ServerImpl.java:321) 运行(Thread.java:619) 原因:com.sun.istack.XMLStreamException2:org.xml.sax.saxpasseException:cvc复杂类型。4:属性“type”必须出现在元素“object”上。 位于com.sun.xml.ws.util.xml.statxSource$1.parse(statxSource.java:185) 位于com.sun.xml.ws.util.xml.statxSource$1.parse(statxSource.java:170) 位于org.apache.xerces.jaxp.validation.ValidatorHandlerImpl.validate(未知源) 位于org.apache.xerces.jaxp.validation.ValidatorImpl.validate(未知源) 位于javax.xml.validation.Validator.validate(Validator.java:127) 位于com.sun.xml.ws.util.pipe.AbstractSchemaValidationTube.doProcess(AbstractSchemaValidationTube.java:204) ... 20多

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

我试图在log4j.xml文件中添加一条规则:

它也不起作用

有什么想法吗

这不是一个大问题,但它使我的catalina.log变得越来越大,它不是适合这种日志的地方


克里斯

最坏情况解决方案:

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

谢谢Chris在我的案例中,我应该使用System.setErr而不是System.setOut如果我没有找到更好的解决方案,我会选择这个解决方案。我正在调查Metro源代码中的类似问题。似乎System.out的输出是硬编码的,不能轻易更改。
java.util.logging.Logger.getLogger("javax.xml.ws.WebServiceException").setLevel(
            java.util.logging.Level.OFF);
System.setOut(new PrintStream(new FileOutputStream("debug.log")));