规范:项目开发中不要编写:System.out.printIn(),应该用日志记录信息
1、spring使用commons-logging作为内部日志,但底层日志实现是开放的,可对接其他日志框架
2、支持jul,log4j,logback,springBoot提供了默认的控制台输出配置,也可以配置输出为文件
3、logback是默认使用的
4、虽然日志框架很多,但是我们不用担心,使用springBoot的默认配置就能工作的很好
springBoot 日志是如何配置好的
1、每个starter场景,都会导入一个核心场景spring-boot-starter
2、核心场景引用了日志所有功能spring-boot-logging
3、默认使用了logback+slf4j组合作为默认底层日志
4、日志是系统已启动就要用的,xxxautoconfiguration是系统启动好了以后放好的组件,后来用的
5、日志是利用监听机制配置好的,appLicationlistener
6、日志所有的配置都可以通过修改配置文件实现,以logging开始的所有配置
package com.atguigu.boot.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author jitwxs
* @date 2023年10月17日 19:59
*/
@RestController
public class Hellower {
Logger logger = LoggerFactory.getLogger(getClass());
@GetMapping("/h")
public String hello(){
logger.info("hahahaha");
return "hello";
}
}
由高到低:All,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF
只会打印指定级别及以上级别的日志
All:打印所有的日志
TRACE:追踪框架详细流程日志,一般不适用
DEBUG:开发调试细节日志
INFO:关键,感兴趣信息日志
WARN:警告但不是错误的信息日志 比如:版本过失
ERROR:业务错误日志,比如出现各种异常
FATAL:致命错误日志,比如jvm系统崩溃
OFF:关闭所有日志
不指定级别的所有类,都是用root指定的级别作为默认级别
springBoot日志默认级别是INFO
1、在application.properties/Yaml中配置logging.level=指定日志级别
2、level可取值范围:TRACE,DEBUG,INFO,WARN,ERROR,FATAL,Or OFF,定义在logLEVEL类中
3、root的logger-name叫root,可以配置logging.level.root=warn,代表所有未指定日志级别都是用root的warn级别
在配置文件中调整日志级别,日志级别默认是info
#日志分组
logging.group.abc=com.atguigu.boot.controller,com.atguigu.boot.controller.service,com.aaa,com.bbb
logging.level.abc = debug
logging.level.sql = debug
#指定日志文件名
#1、只写名字,就生成到当前项目同位置的demo.log
#2、写名字+路径:生成到指定位置的指定文件
logging.file.name=haha.log
每天的日志单独存到一个文件中
#归档分割
logging.logback.rollingpolicy.file-name-pattern=${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
#超过1MB进行分割
logging.logback.rollingpolicy.max-file-size= 1MB