spring boot Logging的配置以及使用详解
前言:该篇文章基本上是翻译的官方文档!
spring boot使用commons logging作为内部的日志系统,并且给java util logging,log4j2以及logback都提供了默认的配置。如果使用了spring boot的starters,那么默认会使用logback用于记录日志。
一、log format
spring boot中默认的日志输出格式如下:
2014-03-05 10:57:51.112 info 45469 --- [ main] org.apache.catalina.core.standardengine :
starting servlet engine: apache tomcat/7.0.52
2014-03-05 10:57:51.253 info 45469 --- [ost-startstop-1] o.a.c.c.c.[tomcat].[localhost].[/] :
initializing spring embedded webapplicationcontext
2014-03-05 10:57:51.253 info 45469 --- [ost-startstop-1] o.s.web.context.contextloader :
root webapplicationcontext: initialization completed in 1358 ms
2014-03-05 10:57:51.698 info 45469 --- [ost-startstop-1] o.s.b.c.e.servletregistrationbean :
mapping servlet: 'dispatcherservlet' to [/]
2014-03-05 10:57:51.702 info 45469 --- [ost-startstop-1] o.s.b.c.embedded.filterregistrationbean :
mapping filter: 'hiddenhttpmethodfilter' to: [/*]
以下项将会被输出:
1、日期和时间--精确到毫秒,并按照时间进行简单的排序
2、日志级别--error,warn,info,debug,trace
3、进程id号
4、日志内容,用"---"分隔符分开
5、线程名字--括在方括号中
6、日志的名字--通常对应的是类名
注意:logback没有fatal级别(映射到error)
二、控制台输出
默认的日志配置将在写入控制台时回显消息,默认会回显error,warn,和info级别的消息,你同样可以在启动的时候,启用debug模式,启动命令如下:java -jar yourapp.jar --debug
注意:你同样可以在application.properties配置文件中指定debug=true,来开启debug,模式一旦开启了debug模式,那么控制台同时会输出容器信息,hibernate信息和spring boot的信息
三、文件输出
默认情况下,spring boot只会将日志输出到console,而不会输出到日志文件中,如果你想将日志写到日志文件中,那么需要在application.properties配置文件中设置logging.file或者是logging.path
注意:此处是或者的关系,也就是说,你配置logging.file或者是logging.path,效果是一样的。
下面的表格将显示如何进行配置文件输出:
logging.file | logging.path | example | 说明 |
二者都不配置,则只输出到console | |||
指定文件 | my.log | 写入指定的日志文件。文件名可以是一个确切的 位置或相对目录 |
|
指定的目录 | /var/log | 将日志文件写入指定的目录,目录可以是一个确切的位置或者是一个相对目录 |
默认情况下,如果日志文件的大小达到10mb的话,就会被截断,输出到新的日志文件中。
注意:日志的配置是独立与实际的日志组件的,也就是说,如果为logback指定配置的属性为logback.configurationfile,那么spring boot将不会管理该日志组件。
四、日志级别
所有支持的日志系统都可以通过spring environment来指定日志级别,例如application.properties,可以使用“logging.level.*=level”来指定日志的级别,"level"的取值可以是trace, debug, info, warn, error, fatal, off。配置示例如下:
logging.level.root=warn #root日志以warn级别输出 logging.level.org.springframework.web=debug #org.springframework.web包下的日志以debug级别输出 logging.level.org.hibernate=error #org.hibernate包下的日志以error级别输出
如果,我们需要指定我们的应用日志级别了,我们也可以使用同样的方式,如下:
logging.level.com.chhliu=info
上面配置中的"com.chhliu"为我们应用的包名。
五、自定义日志输出格式
我们可以通过logging.pattern.file以及logging.pattern.level来配置我们需要的日志输出格式,例如:
logging.pattern.console=%d{yyyy/mm/dd-hh:mm:ss} [%thread] %-5level %logger- %msg%n logging.pattern.file=%d{yyyy/mm/dd-hh:mm} [%thread] %-5level %logger- %msg%n
注意:以上配置,只对logback起作用
六、使用log4j打日志
前面说道,我们默认的是使用logback来作为日志系统的,那么,如果我们想使用log4j来打日志,怎么办了,我们需要在pom文件中加上log4j的starter同时排除logback,如下:
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter</artifactid> <exclusions> <exclusion> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-logging</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-log4j</artifactid> </dependency>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。