1 Logback的引入
所谓日志框架是一套能实现日志输出的工具包,而所有能够描述系统运行状态的事件都可以算作日志。
目前常用的日志框架包括Log4j,Log4j 2,Commons Logging,Slf4j,Logback,Jul等等,但是由于种种原因,比较常用的组合使用方式是Slf4j与Logback组合使用,Commons Logging与Log4j组合使用。
Commons Logging和Slf4j是日志门面。log4j和Logback则是具体的日志实现方案。可以简单的理解为接口与接口的实现,调用这只需要关注接口而无需关注具体的实现,做到解耦。
注解:门面模式是软件工程中常用的一种软件设计模式,也被称为正面模式、外观模式。它为子系统中的一组接口提供一个统一的高层接口,使得子系统更容易使用。
为什么我和spring选择了SLF4J和Logback?
就因为对Commons Logging的接口不满意,有人就搞了Slf4j。因为对Log4j的性能不满意,有人就搞了Logback。而这里的有个人指的就是就是Log4j的作者Ceki。他嫌Log4j是在太懒了,于是离开Apache公司后就开发了Slf4j和Logback。确实SLF4J和Logback的组合也更受大众喜爱。
2 导入jar包
直接导入logback
<!-- logbac的所有jar包-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
或者如果是springboot项目的话,只要有日志记录的起步依赖就行了,如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
3 Logback配置文件
在classpath或者src或者resource文件夹下(即源根文件夹下)创建如logback-spring.xml的配置文件。我们针对info和error信息安全程度的不同,将两种信息分别输出到不同的日志文件中,且每天会重新增加一个文件记录对应日志,达到滚动效果。其余配置见博客——看完这个不会配置logback,请你吃瓜!
具体代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 控制台日志输出格式配置-->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</layout>
</appender>
<!-- INFO级别的日志输出到文件的日志-->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 设置不输出ERROR级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder>
<!-- pattern节点,用来设置日志的输出格式 -->
<pattern>%d{HH:mm:ss.SSS} [%level] [%thread] %logger{60} [%file : %line] %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 输出路径-->
<fileNamePattern>log/info.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<!-- ERROR级别的日志输出到文件的日志-->
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 设置只输出ERROR级别的日志 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<!-- pattern节点,用来设置日志的输出格式 -->
<pattern>%d{HH:mm:ss.SSS} [%level] [%thread] %logger{60} [%file : %line] %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 输出路径-->
<fileNamePattern>log/error.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<!-- 将这些配置应用在根目录下,也就是对全局应用 -->
<root level="info">
<appender-ref ref="consoleLog"/>
<appender-ref ref="fileInfoLog"/>
<appender-ref ref="fileErrorLog"/>
</root>
</configuration>
4 加载配置文件
4.1 springboot中
在application.properties文件中加入以下代码即可
#===========加载日志配置文件==============
logging.config=classpath:logback-sprin
g.xml
4.2 Spring中
在web.xml文件中配置相应的监听器即可
<context-param>
<param-name>logbackConfigLocation</param-name>
<param-value>classpath:logback.xml</param-value>
</context-param>
<listener>
<listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>
</listener>