我正在使用java.util.logging
登录我的Java应用程序。我也使用javax.xml.ws.Endpoint
发布SOAP接口。
随着时间的推移,我添加了越来越多的异常,这些异常在启动时都会出现这样的日志条目:
Jan 24, 2011 12:29:27 PM com.sun.xml.internal.ws.model.RuntimeModeler getExceptionBeanClass
INFO: Dynamically creating exception bean Class de.wi08e.myhome.frontend.jaxws.NotLoggedInBean
我尝试使用过滤器阻止它们,但我不确定使用getLogger
获得哪个类:
/* Filter ExceptionBeanClass logs */
Logger loggerInfo = Logger.getLogger("javax.xml.ws.Endpoint");
loggerInfo.setFilter(new Filter() {
@Override
public boolean isLoggable(LogRecord l) {
System.out.println(l.getMessage());
if (l.getMessage().startsWith("Dynamically creating exception bean Class"))
return false;
return true;
}
});
有谁知道如何找出哪个类创建此日志条目?有没有其他方法来过滤掉这些紧张的信息?
编辑:我也试过Logger.getLogger("com.sun.xml.internal.ws.model.RuntimeModeler")
,但它仍然没有用...
答案 0 :(得分:4)
您应该能够使用以下标志运行java程序:-Djava.util.logging.config.file=<mylogging.properties>
其中mylogging.properties是一个包含以下内容的文件,而不是在代码中执行。
javax.enterprise.resource.webservices.jaxws.server.level = WARN
来自http://www.docjar.com/html/api/com/sun/xml/internal/ws/model/RuntimeModeler.java.html
186 private static final Logger logger =
187 Logger.getLogger(
188 com.sun.xml.internal.ws.util.Constants.LoggingDomain + ".server");
来自Constants
public static final java.lang.String LoggingDomain = "javax.enterprise.resource.webservices.jaxws";
答案 1 :(得分:1)
编辑:Clement P早在我之前回答了这个问题;所有的大拇指都应该归他所有!
我在这里保留答案,因为它使用了另一种方式。
我现在自己解决了。简而言之,这就是解决方案:
Logger.getLogger("javax.enterprise.resource.webservices.jaxws.server").setLevel(Level.WARNING);
如果有人感兴趣,我就是这样找到的:
com.sun.xml.internal.ws.model.RuntimeModeler中的方法getExceptionBeanClass负责消息。它使用与函数
实例化的静态Logger
Logger.getLogger(com.sun.xml.ws.util.Constants.LoggingDomain + ".server");
Google {ing com.sun.xml.ws.util.Constants
引导here,您可以复制LoggingDomain
常量。
但请记住:此解决方案不适用于每个JRE,因为它取决于Sun的“私有”命名空间和实现。
答案 2 :(得分:0)
日志条目似乎表明它是生成此日志消息的com.sun.xml.internal.ws.model.RuntimeModeler类。您应该可以通过raisong此记录器的级别来过滤它。
答案 3 :(得分:0)
或者,您可以创建缺少的类。 实际上,这是我在创建Web服务时遵循的标准过程。
如果您创建此类(即 de.wi08e.myhome.frontend.jaxws.NotLoggedInBean ), 然后它将只使用现有的类,而不尝试在运行时创建它。
实际上,您甚至不必自己创建这些类。您可以使用wsgen工具生成它们。 wsgen.exe 是java jdk的一部分。所以,你可以从命令行运行它。
wsgen.exe -verbose -keep -cp . de.wi08e.myhome.frontend.WebService -d source
接下来将创建的文件移动到正确的项目源文件夹。