禁用Spring日志,以获取可读日志

时间:2013-09-06 00:26:06

标签: spring logging log4j stdout

如何禁用Spring日志以获取我可以轻松阅读或其他人可以阅读的日志输出。 对how to disable spring bean loading log处的类似问题的回答建议在org.springframework substring中注释掉log4j.properties file的所有行。在我的情况下,没有这样的线。

以下是log4j.properties

# 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 

5 个答案:

答案 0 :(得分:31)

对于未明确指定的所有内容,您的默认日志记录是 DEBUG 。因此,所有内容都记录在该级别(根据您的配置判断),基本上您充斥着您的日志。你不应该删除org.springframework的记录器,你应该添加它们并为它们设置另一个级别。

log4j.logger.org.springframework=INFO 

或您喜欢的任何日志级别。

答案 1 :(得分:9)

在你做之前,你应该了解一下:

1.How to add maven dependency 
2.Where to put log4j configuration file

好的,回到问题。最佳答案不适用于spring 4.x ,如果您使用的是spring4.x,请尝试以下3个步骤:

  1. common-logging

    中删除spring-core
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.3.4.RELEASE</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
         

    如果没有这一步,无论你在log4j配置文件中放置什么都行不通,导致spring正在使用common-logging我的男孩!   
      PS:在许多弹簧模块中,spring-core是唯一明确依赖commons-logging的模块。

  2. 添加SLF4J和log4j

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.5.8</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.5.8</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.5.8</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
    </dependency>
    
  3. 配置log4j.properties(您也可以使用xml文件)

      

    log4j.rootCategory = INFO,stdout

         

    log4j.appender.stdout = org.apache.log4j.ConsoleAppender   log4j.appender.stdout.layout = org.apache.log4j.PatternLayout   log4j.appender.stdout.layout.ConversionPattern =%d {ABSOLUTE}%5p%t   %c {2}:%L - %m%n

         

    log4j.category.org.springframework.beans.factory = INFO

  4. 现在,烦人的弹簧调试日志正在消失。编写代码!

    答案来自spring.io doc,原点击here

答案 2 :(得分:4)

所有答案都给出了log4j.properties中配置的示例,这就是所要求的。我有同样的问题,但我在log4j2.xml中使用配置,这里的答案引导我找到解决方案。

如果有人和我在同一条船上,我就是这样做的:我添加了一个名为org.springframework和级别WARN的节点Logger,如下例所示:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="org.springframework" level="WARN"/>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

我使用的是Spring Boot,排除我正在制作的logback-classic,如下面的代码段所示:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

答案 3 :(得分:3)

您可以指定所需的包名称,如以下示例所示:

log4j.logger.com.foo=WARN

现在,您只能在控制台中看到WARN,ERROR和FATAL日志。

答案 4 :(得分:1)

我也面临同样的问题。即使在log4j配置之后,Springframework日志记录也没有被删除。然后我发现它的日志记录取决于公共日志记录。

您必须从Web应用程序的pom.xml文件中的依赖项中禁用commons-logging

即使从pom.xml中删除commons-logging,也请检查Eclipse或STS IDE中可用的依赖关系层次结构。这将有助于了解是否由于我们可能不知道的其他依赖管理而以某种方式添加它。

删除依赖项后,只需将log4j.logger.org.springframework=ERROR添加到log4j配置中。这会有所帮助。