当遵循
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文件中引用它?
解决方法
这是Spring Boot的工作,它通过slf4j处理日志路由jul,jcl和log4j,并通过slf4j使用Logback,正如您可以通过可区分的缩写命名空间类名称来判断的.
通过直接在pom文件上的IntelliJ图工具可以很好地看到所有这些:
此设置遵循最佳实践as described/depicted in the SLF4J site:
由于Spring DEBUG级别,日志很繁琐.改变这种情况:
1)在< 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,lastName='Long']