前面一篇文章我们搭建了springboot的基本框架,实现了增删改查操作。
logback的使用有两种方式,一是通过简单的系统配置,二是通过自定义配置的方式,今天这篇文章简单介绍一下通过系统配置方式实现日志记录。
0.logback
在springboot中,默认使用logback作为系统日志实现的框架,将日志输出到控制台,不会记录到日志文件。
在springboot中使用logback不需要添加额外的依赖,因为在spring-boot-starter或者spring-boot-starter-web中已经包含了logback的依赖。
1.系统方式控制台输出
日志级别 trace<debug<info<warn<error<fatal。默认级别为info,即默认打印info及其以上级别的日志,不区分大小写。
因为springboot中自带,所以我们可以直接添加代码就可以。
private static final Log logger = LogFactory.getLog(SpringApplication.class);
通过上面的代码就可以看出,springboot的默认级别info以上的全部都输出了,但是这种方式只能实习控制台输出,不能将日志进行保存。
那么我们考虑实现持久化。
2.系统方式实现持久化
上面那种只在控制台输出的日志不方便保存和记录,所以我们要进行持久化,让日志保存下来。
我们需要修改application.properties或 application.yml 文件,因为我上一篇文章用的是application.yml文件,那么我们就修改这个文件:
# 日志配置 # 日志配置 logging: file: #配置日志输出的文件 path: log1234 #日志输出的位置,默认是项目的根目录,会自动生成文件夹,而且默认状态日志名字都叫spring.log level: # 配置输出日志级别 root: debug #设置整个项目的日志输出级别默认info(root表示整个项目)
上面这个简单的配置就可以实现日志持久化。我们重启项目,访问相应接口,
首先看控制台输出:
然后找项目目录,发现新建了一个文件夹,文件夹名称就是我们刚才自定义的
我们打开这个文件夹,找到里面的spring.log文件,打开后可以发现我们刚才的输出日志。
3.优化
上面的配置方式比较简单,我们可以进行一些优化,比如我们可以加入日志的输出格式:
# 日志配置 logging: pattern: #配置日志输出格式 file: "%d{yyyy-MM-dd} === [%thread] === %-5level === %logger{50} === - %msg%n" file: #配置日志输出的文件 path: log1234 #日志输出的位置,默认是项目的根目录,会自动生成文件夹,而且默认状态日志名字都叫spring.log level: # 配置输出日志级别 root: debug #设置整个项目的日志输出级别默认info(root表示整个项目)
对于日志输出格式的解释如下:
# 日志输出格式: # %d表示日期时间, # %thread表示线程名, # %-5level:级别从左显示5个字符宽度 # %logger{50} 表示logger名字最长50个字符,否则按照句点分割。 # %msg:日志消息, # %n是换行符 # %clr(对项){颜色名} 配置该项的颜色 #只在控制台有作用 # ${PID:- } 进程号 # %d{yyyy-MM-dd HH:mm:ss.SSS} %clr(%-5level){green} %clr(${PID:- }){magenta} [ %clr(%thread){red}] --- %clr(%logger{36}){blue} : %msg%n #系统默认配置
file中除了可以配置path还可以配置name,效果基本一样,如果两个同时配置,那么name生效。
level中也可以继续修改,比如我们可以规定某个具体的包下执行的日志级别不同,那么就可以参考下面这样设置:
# 日志配置 logging: pattern: #配置日志输出格式 file: "%d{yyyy-MM-dd} === [%thread] === %-5level === %logger{50} === - %msg%n" file: #配置日志输出的文件 path: log1234 #日志输出的位置,默认是项目的根目录,会自动生成文件夹,而且默认状态日志名字都叫spring.log level: # 配置输出日志级别 root: debug #设置整个项目的日志输出级别默认info(root表示整个项目) site.longkui.app.mapper: INFO
注意,替换成自己项目的包名。