当关注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
文件中引用它?
答案 0 :(得分:22)
这是Spring Boot
的工作,它正在处理jul
,jcl
和log4j
以及slf4j
并使用Logback
通过slf4j
可以通过可区分的缩写命名空间类名来判断。
通过直接在pom文件上的IntelliJ图工具可以很好地看到所有这些:
此设置遵循最佳做法as described/depicted in the SLF4J site:
由于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']