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

Lea*_*reM 18 logging spring log4j stdout

如何禁用Spring日志以获得我可以轻松阅读或其他人可以阅读的日志输出.在一个类似的问题,回答了如何禁用的Spring bean加载日志建议注释掉让所有线路org.springframework substringlog4j.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 
Run Code Online (Sandbox Code Playgroud)

M. *_*num 31

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

log4j.logger.org.springframework=INFO 
Run Code Online (Sandbox Code Playgroud)

或者你喜欢的任何日志级别.


Aja*_*jax 10

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

1.How to add maven dependency 
2.Where to put log4j configuration file
Run Code Online (Sandbox Code Playgroud)

好的,回到问题.最佳答案不适用于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>
    
    Run Code Online (Sandbox Code Playgroud)

    如果没有这一步,无论你在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>
    
    Run Code Online (Sandbox Code Playgroud)
  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

现在,恼人的弹簧调试日志正在消失.享受编码!

答案来自spring.io doc,原点请点击这里


小智 6

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

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

<?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>
Run Code Online (Sandbox Code Playgroud)

我正在使用 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>
Run Code Online (Sandbox Code Playgroud)