Java 从记录器中筛选不需要的信息消息

Java 从记录器中筛选不需要的信息消息,java,soap,java.util.logging,Java,Soap,Java.util.logging,我正在使用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

我正在使用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可以获得哪个类:

有人知道如何找出哪个类创建了这个日志条目吗?有没有其他方法可以过滤掉这些令人紧张的信息


编辑:我还尝试了Logger.getLoggercom.sun.xml.internal.ws.model.RuntimeModeler,但它仍然不起作用…

日志条目似乎表明生成此日志消息的是com.sun.xml.internal.ws.model.RuntimeModeler类。您应该能够通过提高此记录器的级别来过滤它。

您应该能够使用以下标志运行java程序:-Djava.util.logging.config.file=其中mylogging.properties是一个包含以下内容的文件,而不是在代码中执行

javax.enterprise.resource.webservices.jaxws.server.level = WARN

从常数开始

  public static final java.lang.String LoggingDomain = "javax.enterprise.resource.webservices.jaxws";
编辑:克莱门特p早在我之前就回答了这个问题;所有的大拇指都应该向他竖起

我把我的答案保留在这里,因为它使用了一种稍微不同的方式

现在我自己解决了。简而言之,这就是解决方案:

Logger.getLogger("javax.enterprise.resource.webservices.jaxws.server").setLevel(Level.WARNING);
如果有人感兴趣,我就是这样发现的:

getExceptionBeanClass in方法负责这些消息。它使用与函数关联的静态记录器

Logger.getLogger(com.sun.xml.ws.util.Constants.LoggingDomain + ".server");
Google ing for com.sun.xml.ws.util.Constants将引导您复制并通过LoggingDomain常量


但请记住:此解决方案不会在所有JRE上都有效,因为它依赖于Sun的“私有”命名空间和实现。

或者,您可以创建缺少的类。 实际上,这是我创建Web服务时遵循的标准过程

如果创建这个类,即de.wi08e.myhome.frontend.jaxws.NotLoggedInBean, 然后它将只使用现有类,而不尝试在运行时创建它

实际上,您甚至不必自己创建这些类。您可以使用wsgen工具生成它们。wsgen.exe是java jdk的一部分。所以,您可以从命令行运行它

wsgen.exe -verbose -keep -cp . de.wi08e.myhome.frontend.WebService -d source

接下来将创建的文件移动到正确的项目源文件夹。

仍不工作:Logger loggerInfo=Logger.getLoggercom.sun.xml.internal.ws.model.RuntimeModeler;loggerInfo.setLevelLevel.WARNING;loggerInfo.setFilter。。。;不起作用:-com.sun.xml.internal.ws.model.RuntimeModeler似乎是错误的类名,因为从未调用筛选方法。这不会调用您定义的筛选方法,这只会提高特定记录器的最低日志级别以发出警告,从而忽略信息消息。你确定你正在用java-Djava.util.logging.config.file=运行这个程序吗?嘿,你在5小时后对自己的问题给出了相同的答案…:哦,不,对不起!我做了一些非常快速的复制和粘贴,但没有成功。但现在我明白了,你从一开始就对了——我真的不应该这么快就否定答案:-
Logger.getLogger(com.sun.xml.ws.util.Constants.LoggingDomain + ".server");
wsgen.exe -verbose -keep -cp . de.wi08e.myhome.frontend.WebService -d source