当遵循
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']