springboot之logback
1:日志的级别
debug<info<warning<error 级别由低到高
特点:
- 级别越低日志打印越详细,量越多,粒度更细
- 级别越高日志打印越少,量越少,粒度越粗
2:日志的分类
父日志:root(根日志),针对整个项目的日志 控制程序员自己写的日志 和框架里面的日志
子日志:logger,针对某个包的日志,子日志优先级高于父日志
3:输出的目的地Appender
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(文件大小到指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流的格式发送到任意指定的地方)
4:Layout:日志输出格式,Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格的形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
5.日志相关的参数
%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},输出类似:2002年10月18日 22 : 10 : 28 , 921 %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )
6.logback的两种形式
1.logback的配置文件,在springboot中引入该配置文件 命名为logback.xml
注意:yml配置日志格式和xml配置日志格式 不能混用 任选其一
注意:springboot默认集成logback的jar包所以不需要引入依赖
注意:springboot默认logback的配置文件路径为:org/springframework/boot/logging/logback/base.xml
<?xml version="1.0" encoding="UTF-8" ?> <configuration> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern> [%p] [%d{yyyy-MM-dd HH:mm:ss}] %m %n</pattern> </layout> </appender> <root level="info"> <appender-ref ref="stdout"/> </root> <logger name="com.baizhi.mapper" level="DEBUG"/> </configuration>
2.使用springboot的自动配置控制日志
logging.level.root=debug #设置父日志级别 logging.level.com.baizhi.conf=debug #设置指定包的日志级别 logging.file= 文件名|路径 建议使用 / 代表项目所在磁盘的根目录 此配置使logging.path失效 logging.path=路径+文件名 logging.pattern.console= [%p] [%d{yyyy-MM-dd HH:mm:ss}] %c %m %n 控制台的日志格式(yml需加单引号), logging.pattern.file= 同上 文件的日志格式
8.在编码中使用logback写日志
//写日志的两种方式 //在类中声明 logger对象 Logger log=LoggerFactory.getLogger(TestDao.class); //配合lombok使用 只需要在类上加@Slf4j注解 //这里的{} 指的占位符 表示 后边需要打印的对象类型或者是基本类型 打印多个值则需要多个占位符 log.info("this is info{}", user); log.debug("this is debug{}", user); log.warn("this is warn{}", user); log.error("this is error{}", user);