1、什么是日志框架
- 一套能实现日志输出的工具包;
- 能够描述系统运行状态的所有时间都可以算作日志。
用户登录退出、接口超时,数据库崩溃,Hello world。
2、日志框架的能力
- 定制输出目标
- 定制输出格式
- 携带上下文信息
- 运行时选择性输出
- 灵活配置
- 优异性能
3、常见的日志框架
JCL、JUL、Log4j、Log4j2、jboss-logging、Logback、SLF4j。
4、日志框架分类
spring boot中最常用的组合框架SLF4j、Logback
5、如何使用SLF4j
5.1、日志的级别
ERROR(40, "ERROR"),
WARN(30, "WARN"),
INFO(20, "INFO"),
DEBUG(10, "DEBUG"),
TRACE(0, "TRACE");
默认的级别为:INFO
5.2、Logback配置
- application.yml,只能满足简单的日志配置需求;
- logback-spring.xml,能够满足定制化的复杂日志配置需求;
配置需求:
- 区分info 和 error日志;
- 每天产生一个日志文件;
application.properties的配置
#logging.pattern.console=%d - %msg%n
#logging.path=F:/project/log/sell
#logging.file=F:/project/log/sell/sell.log
#logging.level.root=debug
logback-spring.xml配置

<?xml version="1.0" encoding="UTF-8" ?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径,必须用绝对路径--> <property name="LOG_HOME" value="F:/project/log/sell/"></property> <!--控制台的输出--> <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level表示级别从左显示5个字符宽度,, %logger{50}表示类的全名 50表示最多显示字符长度,%msg:日志消息,%n是换行符--> <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n </pattern> </layout> </appender> <!--info 日志输出格式配置--> <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--配置筛选策略,只打印INFO日志--> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <!-- 如果命中就允许这条日志 --> <onMismatch>DENY</onMismatch> <!-- 如果没有命中就禁止这条 --> </filter> <encoder charset="UTF-8"> <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n </pattern> </encoder> <!--滚动策略--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--路径--> <fileNamePattern>${LOG_HOME}/info.%d.log</fileNamePattern> <!--日志文件保留天数--> <MaxHistory>30</MaxHistory> </rollingPolicy> <!--日志文件最大的大小--> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> </appender> <!--error 日志输出格式配置--> <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--配置筛选策略--> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> <encoder charset="UTF-8"> <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n </pattern> </encoder> <!--滚动策略--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--路径--> <fileNamePattern>${LOG_HOME}/error.%d.log</fileNamePattern> <!--日志文件保留天数--> <MaxHistory>30</MaxHistory> </rollingPolicy> <!--日志文件最大的大小--> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> </appender> <root level="info"> <appender-ref ref="consoleLog"/> <appender-ref ref="fileInfoLog"/> <appender-ref ref="fileErrorLog"/> </root> </configuration>