默认情况下,springboot会使用logback来记录日志,并且使用INFO级别输出到控制台,在运行程序的时候,你应该看到过很多这样INFO级别的日志了。
从上图可以看到,日志输入的内容如下:
- 时间日期:精确到毫秒
- 日志级别:ERROR,WARN,INFO,DEBUG,TRACE
- 进程ID:
- 分隔符:— 标识实际日志的开始
- 线程名:方括号括起来(可能会截断控制台输出)
- Logger名:通常使用源代码的类名
- 日志内容:
假如maven依赖中添加了spring-boot-starter-logging:
org.springframework.boot spring-boot-starter-logging
但是呢,实际开发中我们不需要直接添加该依赖。
你会发现spring-boot-starter或者spring-boot-starter-web其中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 logback。工程中有用到了Thymeleaf,而Thymeleaf依赖包含了spring-boot-starter,最终我只要引入Thymeleaf即可
日志级别从低到高:
TRACE < DEBUG < INFO < WARN < ERROR < FATAL
如果设置为 WARN ,则低于 WARN 的信息都不会输出。
Spring Boot中默认配置ERROR、WARN和INFO级别的日志输出到控制台。
您还可以通过启动您的应用程序 --debug 标志来启用“调试”模式(开发的时候推荐开启),以下两种方式皆可:
- 在运行命令后加入--debug标志,如:$ java -jar springTest.jar --debug
- 在application.properties中配置debug=true,该属性置为true的时候,核心Logger(包含嵌入式容器、hibernate、spring)会输出更多内容,但是你自己应用的日志并不会输出为DEBUG级别
这里也验证了上面的观点,springboot默认把ERROR、WARN和INFO级别的日志输出到控制台,
//日志的类名必须是当前类,如果不是当前类,那么输出日志的类名也是错的 private final Logger logger = LoggerFactory.getLogger(Hl13LogApplicationTests.class);
这里每一个类都需要写上面的,这样很麻烦,可以使用注解@Slf4j,可是需要使用lombok
可以使用{} 占位符来拼接字符串,而不需要使用““+””来连接字符串
4、文件输出默认情况下,springboot将日志输出到控制台,不会写到日志文件。
使用Spring Boot喜欢在application.properties或application.yml配置,这样只能配置简单的场景,保存路径、日志格式等。复杂的场景(区分 info 和 error 的日志、每天产生一个日志文件等)满足不了,只能自定义配置。
4.1控制台格式化输出内容# 格式化,只输出日期和内容 logging.pattern.console= "%d -%p -%m" %n
打印参数: Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,如下:
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如: %d{yyy MMM dd HH:mm:ss,SSS},输出类似:2018年6月15日22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例: Testlog4.main(TestLog4.java: 10)
4.2日志输出路径
这里设置输出路径为E:log
# 日志输出路径 logging.path= E:\log
默认会在设置的 path 生成一个spring.log 文件。
如果要编写除控制台输出之外的日志文件,则需在application.properties中设置logging.file或logging.path属性。
- logging.file,设置文件,可以是绝对路径,也可以是相对路径。如:logging.file=my.log
- logging.path,设置目录,会在该目录下创建spring.log文件,并写入日志内容,如:logging.path=E:\log
如果只配置logging.file,会在项目的当前路径下生成一个 xxx.log 日志文件。
如果只配置logging.path,在 E:\log文件夹生成一个日志文件为 spring.log
#这样会在当前项目下生成my.log文件 logging.file=my.log # 这样会在指定目录生成my.log文件 # logger文件夹需要提前生成 logging.file= src\main\resources\logger\my.log
5、级别控制注:二者不能同时使用,如若同时使用,则只有logging.file生效
默认情况下,日志文件的大小达到10MB时会切分一次,产生新的日志文件,默认级别为:ERROR、WARN、INFO
所有支持的日志记录系统都可以在Spring环境中设置记录级别(例如在application.properties中)
格式为:'logging.level.* = LEVEL'
logging.level:日志级别控制前缀,*为包名或Logger名
LEVEL:选项TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF
#com.mye.hl13log包下所有class以DEBUG级别输出 logging.level.com.mye.hl13log=DEBUG



