获取org.springframework以停止污染我的日志

时间:2016-03-17 10:42:30

标签: 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.postConstruct : src=/opt/payara41/glassfish/lib/templates/logging.properties
 #!## LogManagerService.postConstruct : dest=/opt/payara41/glassfish/domains/domain1/config/logging.properties

我在上面给出的最后一个org.springframework=WARNING文件的末尾添加了行logging.properties,然后重新启动了我的服务器。这似乎没有效果。当我打开asadmin shell /opt/payara41/bin/asadmin并运行list-log-attributes时,我得到的是:

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.

我已尝试过this SO question中提出的建议,但这些建议无效。我很难过。 :(我真的不想看到Spring框架打印的所有那些INFO日志行。

===编辑===

以下是我的log4j.properties中的内容(从SO复制):

# Define the root logger with appender file
log4j.rootLogger = DEBUG, stdout

# Define the file appender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# Set the name of the logs destination
log4j.appender.stdout.target=System.out

# Set the immediate flush to true (default)
log4j.appender.stdout.ImmediateFlush=true

# Set the threshold to debug mode
log4j.appender.stdout.Threshold=debug

# Set the append to false, overwrite
log4j.appender.stdout.Append=false

# Define the layout for appender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.conversionPattern=%d{yyyy-MM-dd}:%m%n

log4j.logger.org.springframework=WARNING

以下是我将该文件复制到的所有地方:

$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界面中向log4j.logger.org.springframework=WARNING添加了org.springframework=WARNINGConfigurations > server-config > Logger Settings > Module Log Levels。什么都行不通。 Payara的服务器日志仍然具有spring框架的INFO行。

1 个答案:

答案 0 :(得分:0)

我尝试了迄今为止所建议的所有内容,但无济于事。所以我最终做了一些非常黑客的事情。我编写了自己的日志处理程序并将其安装到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框架压缩消息,但我还不需要这样做。