日志
- 方便了解项目运行状况
- 一个框架,记录项目运行时的一些信息,日志框架
- 统一的接口层;日志门面(日志的一个抽象层);给项目中导入具体的日志实现;日志框架都是实现日志抽象层的东西
- 常见的日志框架:JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j等等等等
日志门面(日志的抽象层) | 日志实现 |
---|---|
JCL、SLF4J、Jboss-logging | log4j、JUI、log4j2、logback |
左边选一个接口(抽象层),右边选一个实现
- SpringBoot:底层是Spring框架,Spring默认是JCL
SpringBoot选用SLF4J和logback
SLF4J的使用
开发时,调用的是日志记录实现方法,不应该直接调用实现类,而是调用抽象层的方法;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}
默认调用的是logback的实现
关于调用其他实现,有的需要适配层,log4j、JVM
如何让系统中所有的日志都统一到slf4j
1、将系统中其他日志框架先排除出去
2、用中间包来替换原有的日志框架
3、导入slf4j的其他实现
slf4j的运用
//记录器
Logger logger= LoggerFactory.getLogger(getClass());
@Test
void contextLoads() {
/*日志级别
* 从高到低 trace<debug<info<warn<error
* 可以调整输出的日志级别,日志就只会在这个级别及以后的高级别生效*/
logger.trace("trace日志");
logger.debug("debug日志");
//SpringBoot默认给我们使用的是info级别的
logger.info("info日志");
logger.warn("warn日志");
logger.error("error日志");
}
测试结果:
没有显示trace和debug
在配置文件中,调整日志级别:
logging.level.com.example=trace
再次运行结果:
日志文件的生成:
#logging.file=地址+文件名.log,不指定路径则在当前项目下生成
logging.file=G:/spring.log
#logging.path是指定路径,跟logging.file有些冲突,通常是用path,文件名用SpringBoot默认的
#在当前磁盘的根路径下创建spring文件夹和里面的log文件夹
logging.path=/spring/log
#在控制台输出的日志格式
logging.pattern.console=
#指定文件中日志输出的格式
logging.pattern.file=