为什么要用日志框架
System.out.println虽然也可以输出日志,但是形式单一,只能在命令行中输出,日志框架使用起来差不多,但更加灵活,可以输出到文件中,并且方便全面地记录补充信息。
日志等级
默认INFO等级以上的日志才会输出。
ERROR(40, "ERROR"),
WARN(30, "WARN"),
INFO(20, "INFO"),
DEBUG(10, "DEBUG"),
TRACE(0, "TRACE");
logback的安装
logback本身就是springboot的默认日志框架,这里不要单独安装,但是可以安装lombak来简化logback的代码,lombak的maven配置如下:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
logback的两种配置方式
使用application.yml
logging:
# 定义输出的格式,这里为命令行输出
pattern:
console: "%d - %msg%n"
# 配置输出的文件路径
file:
name: "/var/log/tomcat/sell.log"
# 配置输出日志的等级,这里为debug以上的日志才进行输出
level:
root: debug
使用logback-spring.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!--定义变量,这里只做展示,本配置没有用到-->
<property name="appName" value="atguigu-springboot"></property>
<!--负责写入日志的组件,这里配置的是控制台输出的appender-->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<!--
日志输出格式:
%d表示日期时间,
%thread表示线程名,
%-5level:级别从左显示5个字符宽度
%logger{50} 表示logger名字最长50个字符,否则按照句点分割。
%msg:日志消息,
%n是换行符
-->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
%d - %msg%n
</pattern>
</layout>
</appender>
<!--负责写入日志的组件,这里配置的是滚动输出到文件的appender-->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--过滤器,指定等级的日志才可以输出-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder>
<pattern>
%msg%n
</pattern>
</encoder>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--文件路径-->
<fileNamePattern>
logs/info.%d.log
</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--过滤器,指定等级以上的日志才可以输出-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>
%msg%n
</pattern>
</encoder>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--文件路径-->
<fileNamePattern>
logs/error.%d.log
</fileNamePattern>
</rollingPolicy>
</appender>
<!--根logger,引入appender-->
<root level="info">
<appender-ref ref="consoleLog"/>
<appender-ref ref="fileInfoLog"/>
<appender-ref ref="fileErrorLog"/>
</root>
</configuration>