在简单的示例项目中更改Spring框架日志级别?

时间:2014-04-23 18:46:06

标签: java spring logging spring-boot spring-jdbc

当关注this Spring示例时,我希望看到这样的输出:

Creating tables
Inserting customer record for John Woo
Inserting customer record for Jeff Dean
...

相反,我在每一行之间散布了一些DEBUG日志消息:

Creating tables
12:31:16.474 [main] DEBUG o.s.jdbc.core.JdbcTemplate - Executing SQL statement [drop table customers if exists]
12:31:16.484 [main] DEBUG o.s.jdbc.datasource.DataSourceUtils - Fetching JDBC Connection from DataSource
12:31:16.484 [main] DEBUG o.s.j.d.SimpleDriverDataSource - Creating new JDBC Driver Connection to [jdbc:h2:mem]
...

These various answers似乎表明可以通过更改log4j.properties文件中的日志级别来解决此问题。但是,在以下the Spring example中,永远不会提及log4j.properties文件。

有趣的是,Spring似乎在内部使用log4j

$ grep -R "log4j" *
Binary file build/libs/gs-relational-data-access-0.1.0.jar matches

我想我可以使用log4j来解决此问题,但the manual似乎没有关于放置log4j.properties的位置或如何将其集成到此项目中的信息

如何更改日志级别以删除这些DEBUG语句?

如果我需要使用log4j.properties文件,我该将它放在哪里?我是否需要将其绑定到我的build.gradle文件,或以某种方式在我的.java文件中引用它?

1 个答案:

答案 0 :(得分:22)

这是Spring Boot的工作,它正在处理juljcllog4j以及slf4j并使用Logback通过slf4j可以通过可区分的缩写命名空间类名来判断。

通过直接在pom文件上的IntelliJ图工具可以很好地看到所有这些:

enter image description here

此设置遵循最佳做法as described/depicted in the SLF4J site

slf4j bridge setup - logback implementation

由于Spring DEBUG级别,日志很繁琐。改变这一点:

1)在resources下创建一个<projectDir>/src/main目录,就像在Maven项目中一样。 2)在其中创建一个logback.xml文件,其中包含:

<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>web - %date [%thread] %-5level %logger{36} - %message%n
            </pattern>
        </encoder>
    </appender>

    <logger name="org.springframework" level="WARN" />

    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

瞧!

Creating tables
Inserting customer record for John Woo
Inserting customer record for Jeff Dean
Inserting customer record for Josh Bloch
Inserting customer record for Josh Long
Querying for customer records where first_name = 'Josh':
Customer[id=3, firstName='Josh', lastName='Bloch']
Customer[id=4, firstName='Josh', lastName='Long']