Java 让org.springframework停止污染我的日志

Java 让org.springframework停止污染我的日志,java,spring,configuration,glassfish,log4j,Java,Spring,Configuration,Glassfish,Log4j,我正在使用Payara 4.1和Netbeans 8.1 当我运行我的应用程序时,这四行是最先记录的行之一: #!## LogManagerService.postConstruct : rootFolder=/opt/payara41/glassfish #!## LogManagerService.postConstruct : templateDir=/opt/payara41/glassfish/lib/templates #!## LogManagerService.postCo

我正在使用Payara 4.1和Netbeans 8.1

当我运行我的应用程序时,这四行是最先记录的行之一:

 #!## LogManagerService.postConstruct : rootFolder=/opt/payara41/glassfish
 #!## LogManagerService.postConstruct : templateDir=/opt/payara41/glassfish/lib/templates
 #!## LogManagerService.postConstruct : src=/opt/payara41/glassfish/lib/templates/logging.properties
 #!## LogManagerService.postConstruct : dest=/opt/payara41/glassfish/domains/domain1/config/logging.properties
我在上面给出的最后一个
logging.properties
文件末尾添加了一行
org.springframework=WARNING
,并重新启动了服务器。这似乎没有效果。当我打开asadmin shell
/opt/payara41/bin/asadmin
并运行
列出日志属性时,我得到的结果如下:

asadmin> list-log-attributes
com.sun.enterprise.server.logging.GFFileHandler.excludeFields   <>
com.sun.enterprise.server.logging.GFFileHandler.file    <${com.sun.aas.instanceRoot}/logs/server.log>
com.sun.enterprise.server.logging.GFFileHandler.flushFrequency  <1>
com.sun.enterprise.server.logging.GFFileHandler.formatter   <com.sun.enterprise.server.logging.ODLLogFormatter>
com.sun.enterprise.server.logging.GFFileHandler.logtoConsole    <false>
com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles <0>
com.sun.enterprise.server.logging.GFFileHandler.multiLineMode   <true>
com.sun.enterprise.server.logging.GFFileHandler.retainErrorsStasticsForHours    <0>
com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes    <2000000>
com.sun.enterprise.server.logging.GFFileHandler.rotationOnDateChange    <false>
com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes  <0>
com.sun.enterprise.server.logging.SyslogHandler.useSystemLogging    <false>
handlerServices <com.sun.enterprise.server.logging.GFFileHandler,com.sun.enterprise.server.logging.SyslogHandler>
handlers    <java.util.logging.ConsoleHandler>
java.util.logging.ConsoleHandler.formatter  <com.sun.enterprise.server.logging.UniformLogFormatter>
java.util.logging.FileHandler.count <1>
java.util.logging.FileHandler.formatter <java.util.logging.XMLFormatter>
java.util.logging.FileHandler.limit <50000>
java.util.logging.FileHandler.pattern   <%h/java%u.log>
log4j.logger.org.hibernate.validator.util.Version   <warn>
org.springframework <WARNING>
Command list-log-attributes executed successfully.
以下是我将该文件复制到的所有位置:

$PROJECT_DIR/src/log4j.properties
$PROJECT_DIR/src/main/resources/META-INF/log4j.properties
$PROJECT_DIR/src/main/webapp/WEB-INF/log4j.properties
$PROJECT_DIR/src/main/webapp/WEB-INF/classes/log4j.properties
$PROJECT_DIR/target/$PROJECT-1.0/WEB-INF/log4j.properties
$PROJECT_DIR/target/$PROJECT-1.0/WEB-INF/classes/log4j.properties
$PROJECT_DIR/target/$PROJECT-1.0/WEB-INF/classes/META-INF/log4j.properties
$PROJECT_DIR/target/classes/META-INF/log4j.properties
/opt/payara41/glassfish/domains/domain1/config/log4j.properties

此外,我在Payara UI中添加了
log4j.logger.org.springframework=WARNING
org.springframework=WARNING
Configurations>server config>logger Settings>Module Log Levels
。什么都没用。Payara的服务器日志中仍然有spring框架的信息行。

到目前为止,我尝试了所有建议,但都没有成功。所以我最后做了一件非常骇人的事。我编写了自己的日志处理程序,并将其安装到
domain1/lib/ext

package org.springsuppressor;

import java.util.logging.ConsoleHandler;
import java.util.logging.Level;

public class MyHandler extends ConsoleHandler {

  public MyHandler() {
    super();
    setLevel(Level.WARNING);
  }
}

上面的处理程序将所有记录器的日志级别设置为
WARNING
。我可以仅为spring框架抑制消息,但我还不需要这样做。

为了清楚起见:您编辑的文件是服务器的logging.properties文件?如果是这样的话:Glassfish在内部使用java.util.logging,而Spring似乎使用log4j。如果您想控制spring日志记录,我希望您将log4j.properties文件添加到应用程序中,并在其中放置必要的过滤器。正如我在问题中提到的,我已经尝试将该文件添加到我的WEB-INF目录中。没有工作。WEB-INF或WEB-INF/classes?它需要在类路径上,因此需要进入WEB-INF/classes。我看到您使用的是Maven,放置log4j.properties文件的一个合适目录是
src/main/resources
,当构建和部署应用程序时,它将最终进入WEB-INF/classes。
package org.springsuppressor;

import java.util.logging.ConsoleHandler;
import java.util.logging.Level;

public class MyHandler extends ConsoleHandler {

  public MyHandler() {
    super();
    setLevel(Level.WARNING);
  }
}