在简单示例项目中更改 Spring 框架日志级别?
Posted
技术标签:
【中文标题】在简单示例项目中更改 Spring 框架日志级别?【英文标题】:Change Spring framework log level in simple example project? 【发布时间】:2014-06-08 18:49:57 【问题描述】:当关注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】:这是Spring Boot
的作品,它在slf4j
上处理日志路由jul
、jcl
和log4j
,并通过slf4j
使用Logback
,正如您可以通过可区分的缩短来判断的那样命名空间类名。
所有这些都可以通过 IntelliJ 图表工具直接在 pom 文件上很好地看到:
此设置遵循最佳实践as described/depicted in the SLF4J site:
由于 Spring DEBUG
级别,日志很冗长。要改变它:
1) 在 <projectDir>/src/main
下创建一个 resources
目录,就像在 Maven 项目中一样。
2) 在其中创建一个logback.xml
文件,其中包含:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>web - %date [%thread] %-5level %logger36 - %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']
【讨论】:
6 年后再看这个问题,我只能说,“哇,这比它应该的要复杂得多。”以上是关于在简单示例项目中更改 Spring 框架日志级别?的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 2.0 在yml中更改日志级别到底怎么写?