咱们好!我是sum墨,一个一线的底层码农,平时喜爱研讨和考虑一些技术相关的问题并整理成文,限于自己水平,假如文章和代码有表述不当之处,还请不吝赐教。
以下是正文!
一、写文布景
咱们在写后端项目的时分,日志打印是必需的。支持SpringBoot项目的日志结构一般有log4j、logback,这二者各有好坏,这儿就不翻开对比了。咱们项目中常用的是logback结构,该结构主要是一个logback-spring.xml装备文件起作用。
每次起新的项目我都是从老项目中copy一份出来,这份装备文件内容很详细,几百行左右,我一般都是修正一下运用名、日志输出途径,新项目就能够用了。这份老文件是之前的一个师兄留下的,我运用的时分也没深入去考虑过各个装备的作用,这段时间刚好比较空闲,计划从0开端写出一个自己能看懂的logback-spring.xml。
二、预备篇
首要,我预备了一个空的SpringBoot项目,版本为2.7.13。项目结构图如下:
初始的pom.xml装备文件内容如下:
查看代码
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.13</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>logback</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>logback</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- Springboot web模块-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
发动日志输出如下:
其次,引进logback中心组件,因为SpringBoot自带logback组件,所以咱们在引进的时分不需求指定logback的版本号。
<!-- logback中心组件 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</dependency>
最终,咱们在resources目录下新建一个空的logback-spring.xml文件,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
</configuration>
这样咱们在发动的时分,打印只有一个banner
三、基础篇
1、输出日志到控制台(console)
方才咱们看到假如logback-spring.xml的装备为空的话,那么只会输出一个banner,其他的日志都不会被打印,所以咱们第一步就是要把日志打印到控制台上来。
第一步、装备控制台的appender(logback中appender是负责写日志的组件)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 装备控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 装备日志打印格局 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] ${PID:- } %logger{36} %-5level - %msg%n</pattern>
<charset>utf8</charset>
</encoder>
</appender>
</configuration>
第二步、设置打印到控制台的日志的等级
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 装备控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 装备日志打印格局 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] ${PID:- } %logger{36} %-5level - %msg%n</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 装备输出等级,参加输出方法 -->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
这时控制台现已有日志输出了,输出格局如下
第三步、参加logback默许的一些装备
上面自界说的输出格局有点丑,logback给咱们提供了一些默许的装备和格局,只需求运用include标签引进即可。
代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 默许的一些装备 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 装备控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 装备输出等级,参加输出方法 -->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
这时咱们再发动,发现款式就好看多了
2、将日志输出到文件,如application.log文件
方才的日志是打印到控制台的,咱们一旦把ide关闭就看不到了,所以咱们需求把日志输出到一个文件中,以便将日志留存下来。
第一步、界说运用称号,区别运用
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 默许的一些装备 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 界说运用称号,区别运用 -->
<property name="APP_NAME" value="logback-test"/>
<!-- 装备控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 装备输出等级,参加输出方法 -->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
第二步、界说日志文件的输出途径
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 默许的一些装备 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 界说运用称号,区别运用 -->
<property name="APP_NAME" value="logback-test"/>
<!-- 界说日志文件的输出途径 -->
<property name="LOG_PATH" value="${user.home}/logs/${APP_NAME}"/>
<!-- 装备控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 装备输出等级,参加输出方法 -->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
第三步、界说日志文件称号和途径
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 默许的一些装备 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 界说运用称号,区别运用 -->
<property name="APP_NAME" value="logback-test"/>
<!-- 界说日志文件的输出途径 -->
<property name="LOG_PATH" value="${user.home}/logs/${APP_NAME}"/>
<!-- 界说日志文件称号和途径 -->
<property name="LOG_FILE" value="${LOG_PATH}/application.log"/>
<!-- 装备控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 装备输出等级,参加输出方法 -->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
第四步、将日志翻滚输出到application.log文件中
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 默许的一些装备 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 界说运用称号,区别运用 -->
<property name="APP_NAME" value="logback-test"/>
<!-- 界说日志文件的输出途径 -->
<property name="LOG_PATH" value="${user.home}/logs/${APP_NAME}"/>
<!-- 界说日志文件称号和途径 -->
<property name="LOG_FILE" value="${LOG_PATH}/application.log"/>
<!-- 将日志翻滚输出到application.log文件中 -->
<appender name="APPLICATION"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 输出文件目的地 -->
<file>${LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 装备控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 装备输出等级,参加输出方法 -->
<root level="INFO">
<!-- 参加控制台输出 -->
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
第五步、设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局
<configuration>
<!-- 默许的一些装备 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 界说运用称号,区别运用 -->
<property name="APP_NAME" value="logback-test"/>
<!-- 界说日志文件的输出途径 -->
<property name="LOG_PATH" value="${user.home}/logs/${APP_NAME}"/>
<!-- 界说日志文件称号和途径 -->
<property name="LOG_FILE" value="${LOG_PATH}/application.log"/>
<!-- 将日志翻滚输出到application.log文件中 -->
<appender name="APPLICATION"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 输出文件目的地 -->
<file>${LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 装备控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 装备输出等级,参加输出方法 -->
<root level="INFO">
<!-- 参加控制台输出 -->
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
第六步、追加日志到APPLICATION中
<configuration>
<!-- 默许的一些装备 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 界说运用称号,区别运用 -->
<property name="APP_NAME" value="logback-test"/>
<!-- 界说日志文件的输出途径 -->
<property name="LOG_PATH" value="${user.home}/logs/${APP_NAME}"/>
<!-- 界说日志文件称号和途径 -->
<property name="LOG_FILE" value="${LOG_PATH}/application.log"/>
<!-- 将日志翻滚输出到application.log文件中 -->
<appender name="APPLICATION"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 输出文件目的地 -->
<file>${LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 装备控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 装备输出等级,参加输出方法 -->
<root level="INFO">
<!-- 参加控制台输出 -->
<appender-ref ref="CONSOLE"/>
<!-- 参加APPLICATION输出 -->
<appender-ref ref="APPLICATION"/>
</root>
</configuration>
装备好之后,发动项目,找到user.home会发现有一个logback-test的文件,里边有一个application.log文件,如下图
温馨提示:怎样找到user.home
在Windows上,能够经过翻开Windows资源管理器,然后在地址栏中键入%userprofile%来找到user.home。
在Mac上,能够经过翻开终端运用程序,然后输入echo $HOME指令来找到user.home。
在Linux上,能够经过翻开终端运用程序,然后输入echo $HOME指令来找到user.home。
3、日志分级,将INFO、WARN、ERROR日志别离打印
其实INFO的日志现已在打印在控制台中了,这儿咱们需求独自把WARN、ERROR拎出来打印,主要是为了便利后续排查bug运用。
第一步、界说WARN、ERROR日志文件途径
<configuration>
<!-- 默许的一些装备 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 界说运用称号,区别运用 -->
<property name="APP_NAME" value="logback-test"/>
<!-- 界说日志文件的输出途径 -->
<property name="LOG_PATH" value="${user.home}/logs/${APP_NAME}"/>
<!-- 界说日志文件称号和途径 -->
<property name="LOG_FILE" value="${LOG_PATH}/application.log"/>
<!-- 界说正告等级日志文件称号和途径 -->
<property name="WARN_LOG_FILE" value="${LOG_PATH}/warn.log"/>
<!-- 界说过错等级日志文件称号和途径 -->
<property name="ERROR_LOG_FILE" value="${LOG_PATH}/error.log"/>
<!-- 将日志翻滚输出到application.log文件中 -->
<appender name="APPLICATION"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 输出文件目的地 -->
<file>${LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 装备控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 装备输出等级,参加输出方法 -->
<root level="INFO">
<!-- 参加控制台输出 -->
<appender-ref ref="CONSOLE"/>
<!-- 参加APPLICATION输出 -->
<appender-ref ref="APPLICATION"/>
</root>
</configuration>
第二步、将WARN、ERROR日志摘取出并输出到指定文件中
<configuration>
<!-- 默许的一些装备 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 界说运用称号,区别运用 -->
<property name="APP_NAME" value="logback-test"/>
<!-- 界说日志文件的输出途径 -->
<property name="LOG_PATH" value="${user.home}/logs/${APP_NAME}"/>
<!-- 界说日志文件称号和途径 -->
<property name="LOG_FILE" value="${LOG_PATH}/application.log"/>
<!-- 界说正告等级日志文件称号和途径 -->
<property name="WARN_LOG_FILE" value="${LOG_PATH}/warn.log"/>
<!-- 界说过错等级日志文件称号和途径 -->
<property name="ERROR_LOG_FILE" value="${LOG_PATH}/error.log"/>
<!-- 将日志翻滚输出到application.log文件中 -->
<appender name="APPLICATION"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 输出文件目的地 -->
<file>${LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 摘取出WARN等级日志输出到warn.log中 -->
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${WARN_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/warn.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
<!-- 日志过滤器,将WARN相关日志过滤出来 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
</appender>
<!-- 摘取出ERROR等级日志输出到error.log中 -->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${ERROR_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
<!-- 日志过滤器,将ERROR相关日志过滤出来 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<!-- 装备控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 装备输出等级,参加输出方法 -->
<root level="INFO">
<!-- 参加控制台输出 -->
<appender-ref ref="CONSOLE"/>
<!-- 参加APPLICATION输出 -->
<appender-ref ref="APPLICATION"/>
</root>
</configuration>
第三步、将WARN、ERROR日志加到控制台打印,并输出到指定文件中
<configuration>
<!-- 默许的一些装备 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 界说运用称号,区别运用 -->
<property name="APP_NAME" value="logback-test"/>
<!-- 界说日志文件的输出途径 -->
<property name="LOG_PATH" value="${user.home}/logs/${APP_NAME}"/>
<!-- 界说日志文件称号和途径 -->
<property name="LOG_FILE" value="${LOG_PATH}/application.log"/>
<!-- 界说正告等级日志文件称号和途径 -->
<property name="WARN_LOG_FILE" value="${LOG_PATH}/warn.log"/>
<!-- 界说过错等级日志文件称号和途径 -->
<property name="ERROR_LOG_FILE" value="${LOG_PATH}/error.log"/>
<!-- 将日志翻滚输出到application.log文件中 -->
<appender name="APPLICATION"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 输出文件目的地 -->
<file>${LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 摘取出WARN等级日志输出到warn.log中 -->
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${WARN_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/warn.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
<!-- 日志过滤器,将WARN相关日志过滤出来 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
</appender>
<!-- 摘取出ERROR等级日志输出到error.log中 -->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${ERROR_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
<!-- 日志过滤器,将ERROR相关日志过滤出来 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<!-- 装备控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 装备输出等级 -->
<root level="INFO">
<!-- 参加控制台输出 -->
<appender-ref ref="CONSOLE"/>
<!-- 参加APPLICATION输出 -->
<appender-ref ref="APPLICATION"/>
<!-- 参加WARN日志输出 -->
<appender-ref ref="WARN"/>
<!-- 参加ERROR日志输出 -->
<appender-ref ref="ERROR"/>
</root>
</configuration>
在发动之前,我别离加了一条WARN、ERROR日志,发动时自动打印,如下
同时在logback-test目录下也生成了warn.log和error.log文件。
四、进阶篇
1、打印指定目录下的日志
现在咱们调整项目结构如下:
我想把service中的日志独自打印出来,输出到service.log中,步骤如下
第一步、界说指定目录日志文件输出途径
<configuration>
<!-- 默许的一些装备 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 界说运用称号,区别运用 -->
<property name="APP_NAME" value="logback-test"/>
<!-- 界说日志文件的输出途径 -->
<property name="LOG_PATH" value="${user.home}/logs/${APP_NAME}"/>
<!-- 界说日志文件称号和途径 -->
<property name="LOG_FILE" value="${LOG_PATH}/application.log"/>
<!-- 界说正告等级日志文件称号和途径 -->
<property name="WARN_LOG_FILE" value="${LOG_PATH}/warn.log"/>
<!-- 界说过错等级日志文件称号和途径 -->
<property name="ERROR_LOG_FILE" value="${LOG_PATH}/error.log"/>
<!-- 界说指定目录service日志文件称号和途径 -->
<property name="SERVICE_LOG_FILE" value="${LOG_PATH}/service.log"/>
<!-- 将日志翻滚输出到application.log文件中 -->
<appender name="APPLICATION"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 输出文件目的地 -->
<file>${LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 摘取出WARN等级日志输出到warn.log中 -->
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${WARN_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/warn.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
<!-- 日志过滤器,将WARN相关日志过滤出来 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
</appender>
<!-- 摘取出ERROR等级日志输出到error.log中 -->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${ERROR_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
<!-- 日志过滤器,将ERROR相关日志过滤出来 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<!-- 装备控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 装备输出等级 -->
<root level="INFO">
<!-- 参加控制台输出 -->
<appender-ref ref="CONSOLE"/>
<!-- 参加APPLICATION输出 -->
<appender-ref ref="APPLICATION"/>
<!-- 参加WARN日志输出 -->
<appender-ref ref="WARN"/>
<!-- 参加ERROR日志输出 -->
<appender-ref ref="ERROR"/>
</root>
</configuration>
第二步、界说指定目录日志的appender
<configuration>
<!-- 默许的一些装备 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 界说运用称号,区别运用 -->
<property name="APP_NAME" value="logback-test"/>
<!-- 界说日志文件的输出途径 -->
<property name="LOG_PATH" value="${user.home}/logs/${APP_NAME}"/>
<!-- 界说日志文件称号和途径 -->
<property name="LOG_FILE" value="${LOG_PATH}/application.log"/>
<!-- 界说正告等级日志文件称号和途径 -->
<property name="WARN_LOG_FILE" value="${LOG_PATH}/warn.log"/>
<!-- 界说过错等级日志文件称号和途径 -->
<property name="ERROR_LOG_FILE" value="${LOG_PATH}/error.log"/>
<!-- 界说指定目录service日志文件称号和途径 -->
<property name="SERVICE_LOG_FILE" value="${LOG_PATH}/service.log"/>
<!-- 将日志翻滚输出到application.log文件中 -->
<appender name="APPLICATION"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 输出文件目的地 -->
<file>${LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 摘取出WARN等级日志输出到warn.log中 -->
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${WARN_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/warn.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
<!-- 日志过滤器,将WARN相关日志过滤出来 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
</appender>
<!-- 摘取出ERROR等级日志输出到error.log中 -->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${ERROR_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
<!-- 日志过滤器,将ERROR相关日志过滤出来 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<!-- 装备控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 界说指定目录service的appender -->
<appender name="SERVICE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${SERVICE_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/service.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 装备输出等级 -->
<root level="INFO">
<!-- 参加控制台输出 -->
<appender-ref ref="CONSOLE"/>
<!-- 参加APPLICATION输出 -->
<appender-ref ref="APPLICATION"/>
<!-- 参加WARN日志输出 -->
<appender-ref ref="WARN"/>
<!-- 参加ERROR日志输出 -->
<appender-ref ref="ERROR"/>
</root>
</configuration>
第三步、追加日志到service的appender中
这儿咱们不能直接将SERVICE加到root标签下,要运用别的一个标签logger,该标签承继了root,是子logger。该标签有一个additivity特点,若是additivity设为true,则子logger不止会在自己的appender里输出,还会在root的logger的appender里输出;若是additivity设为false,则子logger只会在自己的appender里输出,不会在root的logger的appender里输出
<configuration>
<!-- 默许的一些装备 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 界说运用称号,区别运用 -->
<property name="APP_NAME" value="logback-test"/>
<!-- 界说日志文件的输出途径 -->
<property name="LOG_PATH" value="${user.home}/logs/${APP_NAME}"/>
<!-- 界说日志文件称号和途径 -->
<property name="LOG_FILE" value="${LOG_PATH}/application.log"/>
<!-- 界说正告等级日志文件称号和途径 -->
<property name="WARN_LOG_FILE" value="${LOG_PATH}/warn.log"/>
<!-- 界说过错等级日志文件称号和途径 -->
<property name="ERROR_LOG_FILE" value="${LOG_PATH}/error.log"/>
<!-- 界说指定目录service日志文件称号和途径 -->
<property name="SERVICE_LOG_FILE" value="${LOG_PATH}/service.log"/>
<!-- 将日志翻滚输出到application.log文件中 -->
<appender name="APPLICATION"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 输出文件目的地 -->
<file>${LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 摘取出WARN等级日志输出到warn.log中 -->
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${WARN_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/warn.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
<!-- 日志过滤器,将WARN相关日志过滤出来 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
</appender>
<!-- 摘取出ERROR等级日志输出到error.log中 -->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${ERROR_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
<!-- 日志过滤器,将ERROR相关日志过滤出来 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<!-- 装备控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 界说指定目录service的appender -->
<appender name="SERVICE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${SERVICE_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/service.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 装备扫描包途径,追加日志到service的appender中 -->
<!--若是additivity设为true,则子Logger不止会在自己的appender里输出,还会在root的logger的appender里输出-->
<logger name="com.example.logback.service" level="INFO" additivity="true">
<appender-ref ref="SERVICE"/>
</logger>
<!-- 装备输出等级 -->
<root level="INFO">
<!-- 参加控制台输出 -->
<appender-ref ref="CONSOLE"/>
<!-- 参加APPLICATION输出 -->
<appender-ref ref="APPLICATION"/>
<!-- 参加WARN日志输出 -->
<appender-ref ref="WARN"/>
<!-- 参加ERROR日志输出 -->
<appender-ref ref="ERROR"/>
</root>
</configuration>
发动只有又会多一个service.log,如下
2、切面日志打印
可能有些同学不知道这个是啥,这儿我举个场景,就好理解了。
假设现在的项目结构如下,增加了一个HttpAspect切面类,作用是监控controller中每个方法的入参、出参、接口耗时等信息,这个功能信任咱们都做过。
HttpAspect代码如下
package com.example.logback.config;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Slf4j
@Aspect
@Component
public class HttpAspect {
@Pointcut("execution(* com.example.logback.controller..*.*(..))")
public void pointCut() {
}
@Around(value = "pointCut()")
public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
// 获取目标参数
String serviceUniqueName = proceedingJoinPoint.getSignature().getDeclaringTypeName();
String methodName = proceedingJoinPoint.getSignature().getName();
long start = System.currentTimeMillis();
Object proceed = proceedingJoinPoint.proceed();
log.info("@Http:{}.{},耗时:{}ms", serviceUniqueName, methodName,
System.currentTimeMillis() - start);
return proceed;
}
}
信任细心的同学现已发现问题了,controller目录下的类里边是没有打印的,log都在config目录下的HttpAspect中,显然指定打印目录为controller是不可的。
那假如指定目录为config呢?假如这个目录下只有一个HttpAspect类是能够的,但假如该目录下还有其他装备类,那这个方法就不太好用了。
这时咱们就需求经过指定类的方法进行打印。
那怎样指定类进行打印呢?咱们常用的@Slf4j注解里边有一个特点topic
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.TYPE)
public @interface Slf4j {
/** @return The category of the constructed Logger. By default, it will use the type where the annotation is placed. */
String topic() default "";
}
界说方法也很简单,如下
这个topic界说之后,和logger中的name特点对上之后,那么这个logger就只会打印这个类的日志!!!
第一步、指定类界说topic
package com.example.logback.config;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Slf4j(topic = "http-log")
@Aspect
@Component
public class HttpAspect {
@Pointcut("execution(* com.example.logback.controller..*.*(..))")
public void pointCut() {
}
@Around(value = "pointCut()")
public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
// 获取目标参数
String serviceUniqueName = proceedingJoinPoint.getSignature().getDeclaringTypeName();
String methodName = proceedingJoinPoint.getSignature().getName();
long start = System.currentTimeMillis();
Object proceed = proceedingJoinPoint.proceed();
log.info("@Http:{}.{},耗时:{}ms", serviceUniqueName, methodName,
System.currentTimeMillis() - start);
return proceed;
}
}
第二步、界说指定类topic的日志文件输出途径
<configuration>
<!-- 默许的一些装备 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 界说运用称号,区别运用 -->
<property name="APP_NAME" value="logback-test"/>
<!-- 界说日志文件的输出途径 -->
<property name="LOG_PATH" value="${user.home}/logs/${APP_NAME}"/>
<!-- 界说日志文件称号和途径 -->
<property name="LOG_FILE" value="${LOG_PATH}/application.log"/>
<!-- 界说正告等级日志文件称号和途径 -->
<property name="WARN_LOG_FILE" value="${LOG_PATH}/warn.log"/>
<!-- 界说过错等级日志文件称号和途径 -->
<property name="ERROR_LOG_FILE" value="${LOG_PATH}/error.log"/>
<!-- 界说指定目录service日志文件称号和途径 -->
<property name="SERVICE_LOG_FILE" value="${LOG_PATH}/service.log"/>
<!-- 界说指定目录HTTP日志文件称号和途径 -->
<property name="HTTP_PACKAGE_LOG_FILE" value="${LOG_PATH}/http-package.log"/>
<!-- 界说指定类topic方法的日志文件称号和途径 -->
<property name="HTTP_TOPIC_LOG_FILE" value="${LOG_PATH}/http-topic.log"/>
<!-- 将日志翻滚输出到application.log文件中 -->
<appender name="APPLICATION"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 输出文件目的地 -->
<file>${LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 摘取出WARN等级日志输出到warn.log中 -->
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${WARN_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/warn.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
<!-- 日志过滤器,将WARN相关日志过滤出来 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
</appender>
<!-- 摘取出ERROR等级日志输出到error.log中 -->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${ERROR_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
<!-- 日志过滤器,将ERROR相关日志过滤出来 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<!-- 装备控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 界说指定目录service的appender -->
<appender name="SERVICE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${SERVICE_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/service.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 界说指定目录HTTP-PACKAGE的appender -->
<appender name="HTTP-PACKAGE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${HTTP_PACKAGE_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/http-package.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 装备扫描包途径,追加日志到service的appender中 -->
<!--若是additivity设为true,则子Logger不止会在自己的appender里输出,还会在root的logger的appender里输出-->
<logger name="com.example.logback.service" level="INFO" additivity="true">
<appender-ref ref="SERVICE"/>
</logger>
<!-- 装备扫描包途径,追加日志到HTTP-PACKAGE的appender中 -->
<!--若是additivity设为true,则子Logger不止会在自己的appender里输出,还会在root的logger的appender里输出-->
<logger name="com.example.logback.config" level="INFO" additivity="false">
<appender-ref ref="HTTP-PACKAGE"/>
</logger>
<!-- 装备输出等级 -->
<root level="INFO">
<!-- 参加控制台输出 -->
<appender-ref ref="CONSOLE"/>
<!-- 参加APPLICATION输出 -->
<appender-ref ref="APPLICATION"/>
<!-- 参加WARN日志输出 -->
<appender-ref ref="WARN"/>
<!-- 参加ERROR日志输出 -->
<appender-ref ref="ERROR"/>
</root>
</configuration>
第三步、界说指定类topic的appender
<configuration>
<!-- 默许的一些装备 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 界说运用称号,区别运用 -->
<property name="APP_NAME" value="logback-test"/>
<!-- 界说日志文件的输出途径 -->
<property name="LOG_PATH" value="${user.home}/logs/${APP_NAME}"/>
<!-- 界说日志文件称号和途径 -->
<property name="LOG_FILE" value="${LOG_PATH}/application.log"/>
<!-- 界说正告等级日志文件称号和途径 -->
<property name="WARN_LOG_FILE" value="${LOG_PATH}/warn.log"/>
<!-- 界说过错等级日志文件称号和途径 -->
<property name="ERROR_LOG_FILE" value="${LOG_PATH}/error.log"/>
<!-- 界说指定目录service日志文件称号和途径 -->
<property name="SERVICE_LOG_FILE" value="${LOG_PATH}/service.log"/>
<!-- 界说指定目录HTTP日志文件称号和途径 -->
<property name="HTTP_PACKAGE_LOG_FILE" value="${LOG_PATH}/http-package.log"/>
<!-- 界说指定类topic方法的日志文件称号和途径 -->
<property name="HTTP_TOPIC_LOG_FILE" value="${LOG_PATH}/http-topic.log"/>
<!-- 将日志翻滚输出到application.log文件中 -->
<appender name="APPLICATION"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 输出文件目的地 -->
<file>${LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 摘取出WARN等级日志输出到warn.log中 -->
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${WARN_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/warn.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
<!-- 日志过滤器,将WARN相关日志过滤出来 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
</appender>
<!-- 摘取出ERROR等级日志输出到error.log中 -->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${ERROR_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
<!-- 日志过滤器,将ERROR相关日志过滤出来 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<!-- 装备控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 界说指定目录service的appender -->
<appender name="SERVICE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${SERVICE_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/service.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 界说指定目录HTTP-PACKAGE的appender -->
<appender name="HTTP-PACKAGE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${HTTP_PACKAGE_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/http-package.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 界说指定类topic的appender -->
<appender name="HTTP-TOPIC" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${HTTP_TOPIC_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/http-topic.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 装备扫描包途径,追加日志到service的appender中 -->
<!--若是additivity设为true,则子Logger不止会在自己的appender里输出,还会在root的logger的appender里输出-->
<logger name="com.example.logback.service" level="INFO" additivity="true">
<appender-ref ref="SERVICE"/>
</logger>
<!-- 装备扫描包途径,追加日志到HTTP-PACKAGE的appender中 -->
<!--若是additivity设为true,则子Logger不止会在自己的appender里输出,还会在root的logger的appender里输出-->
<logger name="com.example.logback.config" level="INFO" additivity="false">
<appender-ref ref="HTTP-PACKAGE"/>
</logger>
<!-- 装备输出等级 -->
<root level="INFO">
<!-- 参加控制台输出 -->
<appender-ref ref="CONSOLE"/>
<!-- 参加APPLICATION输出 -->
<appender-ref ref="APPLICATION"/>
<!-- 参加WARN日志输出 -->
<appender-ref ref="WARN"/>
<!-- 参加ERROR日志输出 -->
<appender-ref ref="ERROR"/>
</root>
</configuration>
第四步、追加日志到指定类topic的appender中
<configuration>
<!-- 默许的一些装备 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 界说运用称号,区别运用 -->
<property name="APP_NAME" value="logback-test"/>
<!-- 界说日志文件的输出途径 -->
<property name="LOG_PATH" value="${user.home}/logs/${APP_NAME}"/>
<!-- 界说日志文件称号和途径 -->
<property name="LOG_FILE" value="${LOG_PATH}/application.log"/>
<!-- 界说正告等级日志文件称号和途径 -->
<property name="WARN_LOG_FILE" value="${LOG_PATH}/warn.log"/>
<!-- 界说过错等级日志文件称号和途径 -->
<property name="ERROR_LOG_FILE" value="${LOG_PATH}/error.log"/>
<!-- 界说指定目录service日志文件称号和途径 -->
<property name="SERVICE_LOG_FILE" value="${LOG_PATH}/service.log"/>
<!-- 界说指定目录HTTP日志文件称号和途径 -->
<property name="HTTP_PACKAGE_LOG_FILE" value="${LOG_PATH}/http-package.log"/>
<!-- 界说指定类topic方法的日志文件称号和途径 -->
<property name="HTTP_TOPIC_LOG_FILE" value="${LOG_PATH}/http-topic.log"/>
<!-- 将日志翻滚输出到application.log文件中 -->
<appender name="APPLICATION"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 输出文件目的地 -->
<file>${LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 摘取出WARN等级日志输出到warn.log中 -->
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${WARN_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/warn.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
<!-- 日志过滤器,将WARN相关日志过滤出来 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
</appender>
<!-- 摘取出ERROR等级日志输出到error.log中 -->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${ERROR_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
<!-- 日志过滤器,将ERROR相关日志过滤出来 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<!-- 装备控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 界说指定目录service的appender -->
<appender name="SERVICE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${SERVICE_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/service.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 界说指定目录HTTP-PACKAGE的appender -->
<appender name="HTTP-PACKAGE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${HTTP_PACKAGE_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/http-package.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 界说指定类topic的appender -->
<appender name="HTTP-TOPIC" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${HTTP_TOPIC_LOG_FILE}</file>
<encoder>
<!-- 运用默许的输出格局打印 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<!-- 设置 RollingPolicy 特点,用于装备文件巨细约束,保存天数、文件名格局 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 文件命名格局 -->
<fileNamePattern>${LOG_PATH}/http-topic.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 文件保存最大天数 -->
<maxHistory>7</maxHistory>
<!-- 文件巨细约束 -->
<maxFileSize>50MB</maxFileSize>
<!-- 文件总巨细 -->
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 装备扫描包途径,追加日志到service的appender中 -->
<!--若是additivity设为true,则子Logger不止会在自己的appender里输出,还会在root的logger的appender里输出-->
<logger name="com.example.logback.service" level="INFO" additivity="true">
<appender-ref ref="SERVICE"/>
</logger>
<!-- 装备扫描包途径,追加日志到HTTP-PACKAGE的appender中 -->
<!--若是additivity设为true,则子Logger不止会在自己的appender里输出,还会在root的logger的appender里输出-->
<logger name="com.example.logback.config" level="INFO" additivity="false">
<appender-ref ref="HTTP-PACKAGE"/>
</logger>
<!-- 装备扫描包途径,追加日志到HTTP-TOPIC的appender中 -->
<!--若是additivity设为true,则子Logger不止会在自己的appender里输出,还会在root的logger的appender里输出-->
<logger name="http-log" level="INFO" additivity="false">
<appender-ref ref="HTTP-TOPIC"/>
</logger>
<!-- 装备输出等级 -->
<root level="INFO">
<!-- 参加控制台输出 -->
<appender-ref ref="CONSOLE"/>
<!-- 参加APPLICATION输出 -->
<appender-ref ref="APPLICATION"/>
<!-- 参加WARN日志输出 -->
<appender-ref ref="WARN"/>
<!-- 参加ERROR日志输出 -->
<appender-ref ref="ERROR"/>
</root>
</configuration>
日志目录中多了一个文件,http-topic,如下
五、写在最终
这篇文章篇幅比较长,主要是装备文件贴的比较多,我本来是想每一步只贴要害代码的,但成文之后看起来有点费劲,所以每一步都贴了全量的装备。xml文件我觉得是比较难阅读的一种文档,里边的标签又多又乱,没有顺序可言。假如不是从第一个标签开端看,底子不知道标签之间的依赖关系,我在博客园发了一篇涂色的文章,将新增的和原有的代码用不同的色彩给标了出来,文章链接如下:SpringBoot项目从0到1装备logback日志打印。