Java 让org.springframework停止污染我的日志
我正在使用Payara 4.1和Netbeans 8.1 当我运行我的应用程序时,这四行是最先记录的行之一: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
#!## 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);
}
}