20

如何禁用 Spring 日志以具有我可以轻松阅读或其他人可以阅读的日志输出。对类似问题的回答,如何禁用 spring bean 加载日志建议注释掉所有包含org.springframework substringin 的行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 
4

5 回答 5

32

对于未明确指定的所有内容,您的默认日志记录是DEBUG。所以一切都记录在那个级别(从你的配置来看),基本上你正在淹没你的日志。您不应该删除 org.springframework 的记录器,您应该添加它们并为它们设置另一个级别。

log4j.logger.org.springframework=INFO 

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

于 2013-09-06T06:02:34.350 回答
12

在你做之前,你应该有一些知识:

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 模块中,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,标准输出

    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

现在,烦人的 spring 调试日志消失了。享受编码吧!

答案来自 spring.io 文档,来源请点击这里

于 2016-11-13T04:44:22.210 回答
6

所有答案都给出了 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>
于 2017-02-24T17:29:34.657 回答
3

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

log4j.logger.com.foo=WARN

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

于 2013-09-06T05:16:22.613 回答
1

我也面临同样的问题。即使在 log4j 配置之后,Springframework 日志记录也没有被删除。然后我发现它的日志记录依赖于 commons-logging。

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

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

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

于 2016-11-24T20:20:54.620 回答