在进行查找资料的时候,发现大都是只讲了怎么通过配置文件去配置,但是具体的流程都不是很明了,甚至,我只想要个输出日志,讲了一大堆原理不明所以,结果还是不知道该怎么做;
因此本次将教大家如何通过使用在springboot项目中使用logback进行log日志的记录;一步一步的将该日志搭建起来,本次的日志使用的是logback,是基于springboot框架的,因此是springboot项目进行搭建。
既然是springboot项目,那么这次的依赖也包括springboot,以及日志依赖等
pom.xml代码如下
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>org.examplegroupId>
<artifactId>项目名称artifactId>
<version>1.0-SNAPSHOTversion>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.4.5version>
<relativePath/>
parent>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starterartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
dependency>
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>3.4.3version>
dependency>
<dependency>
<groupId>log4jgroupId>
<artifactId>log4jartifactId>
<version>1.2.17version>
dependency>
<dependency>
<groupId>org.apache.logging.log4jgroupId>
<artifactId>log4j-coreartifactId>
<version>2.15.0version>
dependency>
dependencies>
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
properties>
project>
log4j和logback都是同一个作者制作的,但是听说不想在log4j进行改动就新做了logback
本次虽然使用的log4j的依赖,但是我们实际上调用的是logback的xml配置文件进行配置
注意,本logback-spring.xml
文件应放在Resources文件夹下
<configuration debug="false">
<property name="LOG_HOME" value="将日志保存的文件夹名称"/>
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}pattern>
<charset>utf8charset>
encoder>
appender>
<appender name="INFO_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/info.logfile>
<append>trueappend>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/info.%d{yyyy-MM-dd}.%i.logfileNamePattern>
<maxHistory>60maxHistory>
<maxFileSize>10MBmaxFileSize>
rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFOlevel>
<onMatch>ACCEPTonMatch>
<onMismatch>DENYonMismatch>
filter>
appender>
<appender name="ERROR_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/error.logfile>
<append>trueappend>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/error.%d{yyyy-MM-dd}.%i.logfileNamePattern>
<maxHistory>60maxHistory>
<maxFileSize>10MBmaxFileSize>
rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERRORlevel>
<onMatch>ACCEPTonMatch>
<onMismatch>DENYonMismatch>
filter>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
encoder>
appender>
<logger name="com.apache.ibatis" level="TRACE"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="com.factory" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
<root>
<level value="info" />
<appender-ref ref="CONSOLE"/>
<appender-ref ref="INFO_LOG"/>
<appender-ref ref="ERROR_LOG"/>
root>
configuration>
在这里留意appender
你会发现我这里配置了两个,一个INFO
,一个ERROR
而且都是用appender
进行配置
如果你想添加别的配置,如debug,
只需要做如下:
appender name="DEBUG_LOG"
<file>${LOG_HOME}/debug.logfile>
<fileNamePattern>${LOG_HOME}/debug.%d{yyyy-MM-dd}.%i.logfileNamePattern>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUGlevel>
<onMatch>ACCEPTonMatch>
<onMismatch>DENYonMismatch>
filter>
将这些部分改为DEBUG
即可
以上的配置代码,不仅仅会按天进行分割,而且在设定的文件大小会依照0,1,2,3进行排序分割
yml关于log的配置如下:
logging:
level:
# 使用debug级别进行日志输出
com.dormitory.mapper: debug
# 配置logback-spring.xml配置
config: classpath:logback-spring.xml
如果需要使用它,那么具体方法如下:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ClassA {
private Logger logger = LoggerFactory.getLogger(ClassA.class);
// 在方法中调用
public void MethodsA() {
// info日志
logger.info("info");
// error日志
logger.error("error");
// debug日志
logger.debug("debug");
// warn日志
logger.warn("warn");
}
}
在我的项目中,我的logback-spring.xml
配置的LOG_HOME
为Factory_Log
于是在运行后产生的文件为:
你会发现只有两个,是因为我只配置了info
和error
以上为springboot使用logback进行日志记录的过程