在开发和生产过程中我们都不同程度的使用到了日志来调试和获取程序运行的信息,因此我们引入了日志框架
logback 就是一款非常优秀的日志框架
logback有两种配置形式->application.yml和logback-spring.xml
application.yml
在这种里面配置相对于是比较简单的,可以做的事情也是比较简单的只能配置一些日志文件的路径日志输出格式等等一些比较简单的内容
logging:
pattern:
console: "%d - %msg%n" # %d 是时间日期 %msg 是日志的信息 %n就是打印换行
path: D:\ # 日志文件输出路径 默认名字是spring.log
level: #还可以这样指定具体类的方法的日志级别
com.xiaoyuan.secondhand.controller.ReleaseGoodsController.addSecendHandGoods: debug
# level: debug # 指定日志的级别
# file: D:\logfilename.log 日志文件的名字和路径
logback-spring.xml
这种配置方式就能够执行比较复杂的配置了
配置控制台的输出
<configuration>
<!-- 下面配置的就是控制台的输出-->
<!-- 意思就是这个配置项需要用到 class指定的这个类去处理-->
<!-- 一个appender就是一个小的配置项-->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<!-- 指定展现的形式-->
<layout class="ch.qos.logback.classic.PatternLayout">
<!-- 这里面就是放的具体的格式-->
<pattern>%d - %msg%n</pattern>
</layout>
</appender>
<!-- 上面配置的就是控制台的输出-->
<root level="info">
<appender-ref ref="consoleLog"/>
</root>
</configuration>
配置文件的输出
1.这个配置是info和error都在同一个文件
<!-- 下面是配置的文件输出-->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>%msg%n</pattern>
</encoder>
<!-- 滚动策略 这个类表示是按照时间来滚动的 每天一个日志文件-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 路径-->
<!-- info.%d.log 直接在日志的文件名里面带上时间-->
<fileNamePattern>D:/info.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<!-- 上面是配置的文件输出-->
<root level="info">
<appender-ref ref="consoleLog"/>
<appender-ref ref="fileInfoLog"/>
</root>
区分Info和Error的日志
每天产生一个日志文件
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!-- 下面配置的就是控制台的输出-->
<!-- 意思就是这个配置项需要用到 class指定的这个类去处理-->
<!-- 一个appender就是一个小的配置项-->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<!-- 指定展现的形式-->
<layout class="ch.qos.logback.classic.PatternLayout">
<!-- 这里面就是放的具体的格式-->
<pattern>%d - %msg%n</pattern>
</layout>
</appender>
<!-- 上面配置的就是控制台的输出-->
<!-- 下面是配置的文件输出-->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- Error的级别比info高所以如果再按照error的过滤方式来的话就过滤不了-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- Error这个配置项表示只让他输出Error级别的日志-->
<level>ERROR</level>
<!-- 如果级别匹配ERROR的话就不让它进-->
<onMatch>DENY</onMatch>
<!-- 如果级别不匹配ERROR的话就让他进-->
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
<!-- 滚动策略 这个类表示是按照时间来滚动的 每天一个日志文件-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 路径-->
<!-- info.%d.log 直接在日志的文件名里面带上时间-->
<fileNamePattern>D:/info.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<!-- 上面是配置的文件输出-->
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 设置一个过滤器 不设置的话还是info和error信息输出到同一个地方-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<!-- Error这个配置项表示只让他输出Error级别的日志-->
<level>ERROR</level>
</filter>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
<!-- 滚动策略 这个类表示是按照时间来滚动的 每天一个日志文件-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 路径-->
<!-- info.%d.log 直接在日志的文件名里面带上时间-->
<fileNamePattern>D:/error.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="consoleLog"/>
<appender-ref ref="fileInfoLog"/>
<appender-ref ref="fileErrorLog"/>
</root>
</configuration>