参考文章:https://blog.youkuaiyun.com/codejas/article/details/82144667
(超级详细,建议看这篇)https://blog.youkuaiyun.com/Inke88/article/details/75007649
日志的框架有很多,springboot默认是使用Logback,当然你只需要添加依赖,你可以使用其他的日志框架,eg:Java Util Logging,Log4J2 和 Logback
1. 首先是日志格式:
springboot的默认日志输出如下:
- 日期时间:精确到毫秒
- 日志级别:ERROR, WARN, INFO, DEBUG or TRACE
- 进程 id
- 分割符:用于区分实际的日志记录
- 线程名:括在方括号中
- 日志名字:通常是源类名
- 日志信息
2. logging的级别:
-
日志从低到高的级别:TRACE < DEBUG < INFO < WARN < ERROR < FATAL。
-
Logback 日志不提供 FATAL 级别,它被映射到 ERROR 级别。
-
注意点:Spring Boot 只会输出比当前级别高的日志,默认的日志级别是 INFO,因此低于 INFO 级别的日志记录都不输出。
- 可以在 application.properties 配置文件中通过 logging.level.= 方式设置日志的级别。
eg:
logging.level.com.dudu=DEBUG:com.dudu包下所有class以DEBUG级别输出
logging.level.root=WARN:root日志以WARN级别输出
- 在运行命令后加入–debug标志,如:$ java -jar springTest.jar --debug
- 在application.properties中配置debug=true,该属性置为true的时候,核心Logger(包含嵌入式容器、hibernate、spring)会输出更多内容,但是你自己应用的日志并不会输出为DEBUG级别。
3. 日志写入到文件
在 application.properties 中设置 logging.file 或 logging.path 属性。
- logging.file:设置文件,可以是绝对路径,也可以是相对路径。
- logging.path:设置目录,会在该目录下创建一个 spring.log 文件,写入日志内容.eg:logging.path=/var/log
注意点:
- 如果只配置 logging.file,会在项目的当前路径下生成一个 xxx.log 日志文件。
- 如果只配置 logging.path,在 /var/log文件夹生成一个日志文件为 spring.log
- 二者不能同时使用,如若同时使用,则只有logging.file生效
默认情况下,日志文件的大小达到10MB时会切分一次,产生新的日志文件,默认级别为:ERROR、WARN、INFO
还有一些通用的配置,大家可以参考一下
# 启用日志颜色
spring.output.ansi.enabled=always
logging.level.root=INFO
# mapper 接口所在的包设置为 debug
logging.level.com.×××.mapper=DEBUG
# 在当前项目下生成日志文件
logging.file=./logs/×××.log
logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %clr(%logger){cyan} %clr(%msg%n){green}
logging.pattern.file=%d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n
4. 自定义日志配置
根据不同的日志系统,你可以按如下规则组织配置文件名,就能被正确加载:
- Logback:logback-spring.xml, logback-spring.groovy, logback.xml,logback.groovy
- Log4j:log4j-spring.properties, log4j-spring.xml,log4j.properties, log4j.xml
- Log4j2:log4j2-spring.xml, log4j2.xml
- JDK(Java Util Logging):logging.properties
Spring Boot官方推荐优先使用带有-spring的文件名作为你的日志配置(如使用logback-spring.xml,而不是logback.xml),命名为logback-spring.xml的日志配置文件,spring boot可以为它添加一些spring boot特有的配置项(下面会提到)。
默认的命名规则,并且放在 src/main/resources 下面即可
如果你即想完全掌控日志配置,但又不想用logback.xml作为Logback配置的名字,application.yml可以通过logging.config属性指定自定义的名字:
logging.config=classpath:logging-config.xml
1
虽然一般并不需要改变配置文件的名字,但是如果你想针对不同运行时Profile使用不同的日志配置,这个功能会很有用。
一般不需要这个属性,而是直接在logback-spring.xml中使用springProfile配置,不需要logging.config指定不同环境使用不同配置文件。springProfile配置在下面介绍。