Spring Boot在所有内部日志中使用org.commons.logging的接口,但是适配日常的日志配置,如:JUL,Log4J, Log4J2和Logback。 通过配置文件来修改日志输出的格式或者输出内容。
springboot有自己的日志jar包,如果引入其他的框架也有日志默认jar包,那么引入新框架,必须排除掉原有日志jar。
springboot能自动适配所有的日志,而且底层使用slf4j+logback的方式记录日志。
日志使用
默认日志
//记录器
Logger logger = LoggerFactory.getLogger(getClass());
设置某个包下日志的输出水平从哪个位置开始,springboot默认是从info等级开始的。
logging.level.com.example=trace
- trace
- debug
- info
- warn
- error
logging.file | logging.path | Example | Description |
---|---|---|---|
(none) | (none) | 只在控制台输出 | |
指定文件名 | (none) | springboot.log | 输出日志到springboot.log文件 |
(none) | 给出路径 | /spring/log | 在当前项目磁盘的路径下创建文件夹/spring/log,并使用spring.log作为默认文件 |
application.properties
#如果不指定路径,也就是没有配置,日志会默认在项目路径下生成springboot.log日志
#可以指定完整路径
logging.file=G:/springboot.log
#在当前磁盘的跟路径下创建文件夹,然后默认spring.log文件
logging.path=/spring/log
二选一
#在控制台输出的日志格式
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n
#控制文件输出的日志格式
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n
日志编码:
- %d{HH: mm:ss.SSS}——日志输出时间
- %thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用
- %-5level——日志级别,并且使用5个字符靠左对齐
- %logger{50}——日志输出者的名字
- %msg——日志消息
- %n——平台的换行符
指定配置
springboot中,使用了哪个日志框架,那就必须使用相应的配置文件
|
logging system | customization |
---|---|
Logback | logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy |
Log4j2 | log4j2-spring.xml, log4j2.xml |
JDK(Java Util Logging) | logging.properties |
logback.xml: 直接就被日志框架识别了
logback-spring.xml: 日志框架就不直接加载日志的配置项,由springBoot解析日志配置,可以使用高级profile功能:
<springProfile name="staging">
<!-- configuration to be enabled when the "staging" profile is active -->
</springProfile>
<springProfile name="dev | staging">
<!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
可以指定配置在某个环境下生效。
</springProfile>
<springProfile name="!production">
<!-- configuration to be enabled when the "production" profile is not active -->
</springProfile>
拓展性更强。