SpringBoot日志框架基础(slf4j+logback)
1.统一日志记录
之前要是使用ssm框架使用统一日志的话,有的框架(spring默认commons-logging,hibernate默认jboss-logging等等…)有自己默认日志框架,因此在使用前需要统一日志记录。以此实现即使默认为其他日志框架也会统一使用slf4j进行输出。
将系统中所有日志都统一到slf4j步骤:
-
将系统中其他日志框架先排除出去
-
将中间包来替换原有的日志框架
-
导入slf4j其他的实现
不过SpringBoot无需这样了,已经在底层统一日志框架为slf4j+logback。
2.SpringBoot日志的实现原理解析
进入pom.xml文件中,右键选择Diagrams——>show Dependencies
-
使用了中间替换包log4j-to-slf4j和jul-to-slf4j
-
SpringBoot底层把log4j和jul替换成了slf4j
因此SpringBoot日志框架底层是由slf4j+logback组成
3.设置日志框架
在配置文件application.propeities中可设置以下常用属性:
1.logging.level设置日志等级(包级别/类级别)
如logging.level.com.lipiao.traveltreasure.controler=trace
2.logging.file设置日志文件名
//当前项目下生成myLog.log
如logging.file=myLog.log
//指定文件路径生成(D盘下的LogFile下)
如logging.file=D:/LogFile/myLog.log
3.logging.path
设置日志文件存放路径,文件名会有默认的spring.log
logging.path=/SpringBoot/Log #默认创建该路径和spring.log
- logging.file与logging.path有冲突设置,两个都选择会使用logging.file设置,一般使用logging.path
日志输出格式:
-
%d:时间
-
%thread:线程名
-
%-Slevel:级别
-
%logger:logger名字,取前50字符
-
%msg:日志消息
-
%n换行
修改SpringBoot默认日志输出的格式可以使用以下两方法:
4.指定控制台中日志输出的格式
logging.pattern.console=
5.指定文件中日志输出的格式
logging.pattern.file=
4.使用日志框架
创建单例模式(饿汉)工具类
package com.lipiao.traveltreasure.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 日志工具类-使用默认的slf4j+logback * 单例模式-饿汉 * LogUtil.getInstance() //初始化 * LogUtil.getLogger(). //使用 */ public class LogUtil { //单例LogUtil private static LogUtil logUtil = new LogUtil(); //记录器 private static Logger logger; public LogUtil() { logger = LoggerFactory.getLogger(getClass()); } //初始化 public static LogUtil getInstance() { return logUtil; } //调用 public static Logger getLogger() { return logger; } }
Application启动类main中初始化该工具:
@SpringBootApplication @MapperScan("com.lipiao.traveltreasure.dao") //扫描Mapper接口 public class TravelTreasureApplication { public static void main(String[] args) { //初始化LogUtil单例 LogUtil.getInstance(); SpringApplication.run(TravelTreasureApplication.class, args); } }
在自己的java文件中使用
private String TAG="ActivityController"; //日志 LogUtil.getLogger().info(TAG+"需要打印的日志信息/调式信息");
- logging.file与logging.path有冲突设置,两个都选择会使用logging.file设置,一般使用logging.path