推广网站建设上海公司注册虚拟地址
news/
2025/10/9 9:56:30/
文章来源:
推广网站建设,上海公司注册虚拟地址,app网站建设工作师,宁波自主建站模板大家好#xff01;我是sum墨#xff0c;一个一线的底层码农#xff0c;平时喜欢研究和思考一些技术相关的问题并整理成文#xff0c;限于本人水平#xff0c;如果文章和代码有表述不当之处#xff0c;还请不吝赐教。
以下是正文#xff01;
一、写文背景
我们在写后端…大家好我是sum墨一个一线的底层码农平时喜欢研究和思考一些技术相关的问题并整理成文限于本人水平如果文章和代码有表述不当之处还请不吝赐教。
以下是正文
一、写文背景
我们在写后端项目的时候日志打印是必需的。支持SpringBoot项目的日志框架一般有log4j、logback这二者各有优劣这里就不展开对比了。我们项目中常用的是logback框架该框架主要是一个logback-spring.xml配置文件起作用。每次起新的项目我都是从老项目中copy一份出来这份配置文件内容很详细几百行左右我一般都是修改一下应用名、日志输出路径新项目就可以用了。这份老文件是之前的一个师兄留下的我使用的时候也没深入去思考过各个配置的作用这段时间刚好比较空闲打算从0开始写出一个自己能看懂的logback-spring.xml。
二、准备篇
首先我准备了一个空的SpringBoot项目版本为2.7.13。项目结构图如下 初始的pom.xml配置文件内容如下
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.7.13/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.example/groupIdartifactIdlogback/artifactIdversion0.0.1-SNAPSHOT/versionnamelogback/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.version/propertiesdependencies!-- Springboot web模块--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project
启动日志输出如下 其次引入logback核心组件因为SpringBoot自带logback组件所以我们在引入的时候不需要指定logback的版本号。
!-- logback核心组件 --
dependencygroupIdch.qos.logback/groupIdartifactIdlogback-core/artifactId
/dependency
最后我们在resources目录下新建一个空的logback-spring.xml文件代码如下
?xml version1.0 encodingUTF-8?
configuration/configuration
这样我们在启动的时候打印只有一个banner 三、基础篇
1、输出日志到控制台console
刚才我们看到如果logback-spring.xml的配置为空的话那么只会输出一个banner其他的日志都不会被打印所以我们第一步就是要把日志打印到控制台上来。
第一步、配置控制台的appenderlogback中appender是负责写日志的组件
?xml version1.0 encodingUTF-8?
configuration!-- 配置控制台输出 --appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoder!-- 配置日志打印格式 --pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] ${PID:- } %logger{36} %-5level - %msg%n/patterncharsetutf8/charset/encoder/appender
/configuration
第二步、设置打印到控制台的日志的级别
?xml version1.0 encodingUTF-8?
configuration!-- 配置控制台输出 --appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoder!-- 配置日志打印格式 --pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] ${PID:- } %logger{36} %-5level - %msg%n/patterncharsetutf8/charset/encoder/appender!-- 配置输出级别加入输出方式 --root levelINFOappender-ref refCONSOLE//root
/configuration
这时控制台已经有日志输出了输出格式如下 第三步、加入logback默认的一些配置
上面自定义的输出格式有点丑logback给我们提供了一些默认的配置和格式只需要使用include标签引入即可。 代码如下
?xml version1.0 encodingUTF-8?
configuration!-- 默认的一些配置 --include resourceorg/springframework/boot/logging/logback/defaults.xml/!-- 配置控制台输出 --appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder/appender!-- 配置输出级别加入输出方式 --root levelINFOappender-ref refCONSOLE//root
/configuration
这时我们再启动发现样式就好看多了 2、将日志输出到文件如application.log文件
刚才的日志是打印到控制台的我们一旦把ide关闭就看不到了所以我们需要把日志输出到一个文件中以便将日志留存下来。
第一步、定义应用名称区分应用
?xml version1.0 encodingUTF-8?
configuration!-- 默认的一些配置 --include resourceorg/springframework/boot/logging/logback/defaults.xml/!-- 定义应用名称区分应用 --property nameAPP_NAME valuelogback-test/!-- 配置控制台输出 --appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder/appender!-- 配置输出级别加入输出方式 --root levelINFOappender-ref refCONSOLE//root
/configuration
第二步、定义日志文件的输出路径
?xml version1.0 encodingUTF-8?
configuration!-- 默认的一些配置 --include resourceorg/springframework/boot/logging/logback/defaults.xml/!-- 定义应用名称区分应用 --property nameAPP_NAME valuelogback-test/!-- 定义日志文件的输出路径 --property nameLOG_PATH value${user.home}/logs/${APP_NAME}/!-- 配置控制台输出 --appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder/appender!-- 配置输出级别加入输出方式 --root levelINFOappender-ref refCONSOLE//root
/configuration
第三步、定义日志文件名称和路径
?xml version1.0 encodingUTF-8?
configuration!-- 默认的一些配置 --include resourceorg/springframework/boot/logging/logback/defaults.xml/!-- 定义应用名称区分应用 --property nameAPP_NAME valuelogback-test/!-- 定义日志文件的输出路径 --property nameLOG_PATH value${user.home}/logs/${APP_NAME}/!-- 定义日志文件名称和路径 --property nameLOG_FILE value${LOG_PATH}/application.log/!-- 配置控制台输出 --appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder/appender!-- 配置输出级别加入输出方式 --root levelINFOappender-ref refCONSOLE//root
/configuration
第四步、将日志滚动输出到application.log文件中
?xml version1.0 encodingUTF-8?
configuration!-- 默认的一些配置 --include resourceorg/springframework/boot/logging/logback/defaults.xml/!-- 定义应用名称区分应用 --property nameAPP_NAME valuelogback-test/!-- 定义日志文件的输出路径 --property nameLOG_PATH value${user.home}/logs/${APP_NAME}/!-- 定义日志文件名称和路径 --property nameLOG_FILE value${LOG_PATH}/application.log/!-- 将日志滚动输出到application.log文件中 --appender nameAPPLICATIONclassch.qos.logback.core.rolling.RollingFileAppender!-- 输出文件目的地 --file${LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder/appender!-- 配置控制台输出 --appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder/appender!-- 配置输出级别加入输出方式 --root levelINFO!-- 加入控制台输出 --appender-ref refCONSOLE//root
/configuration
第五步、设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式
configuration!-- 默认的一些配置 --include resourceorg/springframework/boot/logging/logback/defaults.xml/!-- 定义应用名称区分应用 --property nameAPP_NAME valuelogback-test/!-- 定义日志文件的输出路径 --property nameLOG_PATH value${user.home}/logs/${APP_NAME}/!-- 定义日志文件名称和路径 --property nameLOG_FILE value${LOG_PATH}/application.log/!-- 将日志滚动输出到application.log文件中 --appender nameAPPLICATIONclassch.qos.logback.core.rolling.RollingFileAppender!-- 输出文件目的地 --file${LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_FILE}.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 配置控制台输出 --appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder/appender!-- 配置输出级别加入输出方式 --root levelINFO!-- 加入控制台输出 --appender-ref refCONSOLE//root
/configuration
第六步、追加日志到APPLICATION中
configuration!-- 默认的一些配置 --include resourceorg/springframework/boot/logging/logback/defaults.xml/!-- 定义应用名称区分应用 --property nameAPP_NAME valuelogback-test/!-- 定义日志文件的输出路径 --property nameLOG_PATH value${user.home}/logs/${APP_NAME}/!-- 定义日志文件名称和路径 --property nameLOG_FILE value${LOG_PATH}/application.log/!-- 将日志滚动输出到application.log文件中 --appender nameAPPLICATIONclassch.qos.logback.core.rolling.RollingFileAppender!-- 输出文件目的地 --file${LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_FILE}.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 配置控制台输出 --appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder/appender!-- 配置输出级别加入输出方式 --root levelINFO!-- 加入控制台输出 --appender-ref refCONSOLE/!-- 加入APPLICATION输出 --appender-ref refAPPLICATION//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 resourceorg/springframework/boot/logging/logback/defaults.xml/!-- 定义应用名称区分应用 --property nameAPP_NAME valuelogback-test/!-- 定义日志文件的输出路径 --property nameLOG_PATH value${user.home}/logs/${APP_NAME}/!-- 定义日志文件名称和路径 --property nameLOG_FILE value${LOG_PATH}/application.log/!-- 定义警告级别日志文件名称和路径 --property nameWARN_LOG_FILE value${LOG_PATH}/warn.log/!-- 定义错误级别日志文件名称和路径 --property nameERROR_LOG_FILE value${LOG_PATH}/error.log/!-- 将日志滚动输出到application.log文件中 --appender nameAPPLICATIONclassch.qos.logback.core.rolling.RollingFileAppender!-- 输出文件目的地 --file${LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_FILE}.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 配置控制台输出 --appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder/appender!-- 配置输出级别加入输出方式 --root levelINFO!-- 加入控制台输出 --appender-ref refCONSOLE/!-- 加入APPLICATION输出 --appender-ref refAPPLICATION//root
/configuration
第二步、将WARN、ERROR日志摘取出并输出到指定文件中
configuration!-- 默认的一些配置 --include resourceorg/springframework/boot/logging/logback/defaults.xml/!-- 定义应用名称区分应用 --property nameAPP_NAME valuelogback-test/!-- 定义日志文件的输出路径 --property nameLOG_PATH value${user.home}/logs/${APP_NAME}/!-- 定义日志文件名称和路径 --property nameLOG_FILE value${LOG_PATH}/application.log/!-- 定义警告级别日志文件名称和路径 --property nameWARN_LOG_FILE value${LOG_PATH}/warn.log/!-- 定义错误级别日志文件名称和路径 --property nameERROR_LOG_FILE value${LOG_PATH}/error.log/!-- 将日志滚动输出到application.log文件中 --appender nameAPPLICATIONclassch.qos.logback.core.rolling.RollingFileAppender!-- 输出文件目的地 --file${LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_FILE}.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 摘取出WARN级别日志输出到warn.log中 --appender nameWARN classch.qos.logback.core.rolling.RollingFileAppenderfile${WARN_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/warn.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy!-- 日志过滤器将WARN相关日志过滤出来 --filter classch.qos.logback.classic.filter.ThresholdFilterlevelWARN/level/filter/appender!-- 摘取出ERROR级别日志输出到error.log中 --appender nameERROR classch.qos.logback.core.rolling.RollingFileAppenderfile${ERROR_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/error.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy!-- 日志过滤器将ERROR相关日志过滤出来 --filter classch.qos.logback.classic.filter.ThresholdFilterlevelERROR/level/filter/appender!-- 配置控制台输出 --appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder/appender!-- 配置输出级别加入输出方式 --root levelINFO!-- 加入控制台输出 --appender-ref refCONSOLE/!-- 加入APPLICATION输出 --appender-ref refAPPLICATION//root
/configuration
第三步、将WARN、ERROR日志加到控制台打印并输出到指定文件中
configuration!-- 默认的一些配置 --include resourceorg/springframework/boot/logging/logback/defaults.xml/!-- 定义应用名称区分应用 --property nameAPP_NAME valuelogback-test/!-- 定义日志文件的输出路径 --property nameLOG_PATH value${user.home}/logs/${APP_NAME}/!-- 定义日志文件名称和路径 --property nameLOG_FILE value${LOG_PATH}/application.log/!-- 定义警告级别日志文件名称和路径 --property nameWARN_LOG_FILE value${LOG_PATH}/warn.log/!-- 定义错误级别日志文件名称和路径 --property nameERROR_LOG_FILE value${LOG_PATH}/error.log/!-- 将日志滚动输出到application.log文件中 --appender nameAPPLICATIONclassch.qos.logback.core.rolling.RollingFileAppender!-- 输出文件目的地 --file${LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_FILE}.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 摘取出WARN级别日志输出到warn.log中 --appender nameWARN classch.qos.logback.core.rolling.RollingFileAppenderfile${WARN_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/warn.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy!-- 日志过滤器将WARN相关日志过滤出来 --filter classch.qos.logback.classic.filter.ThresholdFilterlevelWARN/level/filter/appender!-- 摘取出ERROR级别日志输出到error.log中 --appender nameERROR classch.qos.logback.core.rolling.RollingFileAppenderfile${ERROR_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/error.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy!-- 日志过滤器将ERROR相关日志过滤出来 --filter classch.qos.logback.classic.filter.ThresholdFilterlevelERROR/level/filter/appender!-- 配置控制台输出 --appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder/appender!-- 配置输出级别 --root levelINFO!-- 加入控制台输出 --appender-ref refCONSOLE/!-- 加入APPLICATION输出 --appender-ref refAPPLICATION/!-- 加入WARN日志输出 --appender-ref refWARN/!-- 加入ERROR日志输出 --appender-ref refERROR//root
/configuration
在启动之前我分别加了一条WARN、ERROR日志启动时自动打印如下 同时在logback-test目录下也生成了warn.log和error.log文件。 四、进阶篇
1、打印指定目录下的日志
现在我们调整项目结构如下 我想把service中的日志单独打印出来输出到service.log中步骤如下
第一步、定义指定目录日志文件输出路径
configuration!-- 默认的一些配置 --include resourceorg/springframework/boot/logging/logback/defaults.xml/!-- 定义应用名称区分应用 --property nameAPP_NAME valuelogback-test/!-- 定义日志文件的输出路径 --property nameLOG_PATH value${user.home}/logs/${APP_NAME}/!-- 定义日志文件名称和路径 --property nameLOG_FILE value${LOG_PATH}/application.log/!-- 定义警告级别日志文件名称和路径 --property nameWARN_LOG_FILE value${LOG_PATH}/warn.log/!-- 定义错误级别日志文件名称和路径 --property nameERROR_LOG_FILE value${LOG_PATH}/error.log/!-- 定义指定目录service日志文件名称和路径 --property nameSERVICE_LOG_FILE value${LOG_PATH}/service.log/!-- 将日志滚动输出到application.log文件中 --appender nameAPPLICATIONclassch.qos.logback.core.rolling.RollingFileAppender!-- 输出文件目的地 --file${LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_FILE}.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 摘取出WARN级别日志输出到warn.log中 --appender nameWARN classch.qos.logback.core.rolling.RollingFileAppenderfile${WARN_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/warn.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy!-- 日志过滤器将WARN相关日志过滤出来 --filter classch.qos.logback.classic.filter.ThresholdFilterlevelWARN/level/filter/appender!-- 摘取出ERROR级别日志输出到error.log中 --appender nameERROR classch.qos.logback.core.rolling.RollingFileAppenderfile${ERROR_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/error.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy!-- 日志过滤器将ERROR相关日志过滤出来 --filter classch.qos.logback.classic.filter.ThresholdFilterlevelERROR/level/filter/appender!-- 配置控制台输出 --appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder/appender!-- 配置输出级别 --root levelINFO!-- 加入控制台输出 --appender-ref refCONSOLE/!-- 加入APPLICATION输出 --appender-ref refAPPLICATION/!-- 加入WARN日志输出 --appender-ref refWARN/!-- 加入ERROR日志输出 --appender-ref refERROR//root
/configuration
第二步、定义指定目录日志的appender
configuration!-- 默认的一些配置 --include resourceorg/springframework/boot/logging/logback/defaults.xml/!-- 定义应用名称区分应用 --property nameAPP_NAME valuelogback-test/!-- 定义日志文件的输出路径 --property nameLOG_PATH value${user.home}/logs/${APP_NAME}/!-- 定义日志文件名称和路径 --property nameLOG_FILE value${LOG_PATH}/application.log/!-- 定义警告级别日志文件名称和路径 --property nameWARN_LOG_FILE value${LOG_PATH}/warn.log/!-- 定义错误级别日志文件名称和路径 --property nameERROR_LOG_FILE value${LOG_PATH}/error.log/!-- 定义指定目录service日志文件名称和路径 --property nameSERVICE_LOG_FILE value${LOG_PATH}/service.log/!-- 将日志滚动输出到application.log文件中 --appender nameAPPLICATIONclassch.qos.logback.core.rolling.RollingFileAppender!-- 输出文件目的地 --file${LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_FILE}.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 摘取出WARN级别日志输出到warn.log中 --appender nameWARN classch.qos.logback.core.rolling.RollingFileAppenderfile${WARN_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/warn.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy!-- 日志过滤器将WARN相关日志过滤出来 --filter classch.qos.logback.classic.filter.ThresholdFilterlevelWARN/level/filter/appender!-- 摘取出ERROR级别日志输出到error.log中 --appender nameERROR classch.qos.logback.core.rolling.RollingFileAppenderfile${ERROR_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/error.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy!-- 日志过滤器将ERROR相关日志过滤出来 --filter classch.qos.logback.classic.filter.ThresholdFilterlevelERROR/level/filter/appender!-- 配置控制台输出 --appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder/appender!-- 定义指定目录service的appender --appender nameSERVICE classch.qos.logback.core.rolling.RollingFileAppenderfile${SERVICE_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/service.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 配置输出级别 --root levelINFO!-- 加入控制台输出 --appender-ref refCONSOLE/!-- 加入APPLICATION输出 --appender-ref refAPPLICATION/!-- 加入WARN日志输出 --appender-ref refWARN/!-- 加入ERROR日志输出 --appender-ref refERROR//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 resourceorg/springframework/boot/logging/logback/defaults.xml/!-- 定义应用名称区分应用 --property nameAPP_NAME valuelogback-test/!-- 定义日志文件的输出路径 --property nameLOG_PATH value${user.home}/logs/${APP_NAME}/!-- 定义日志文件名称和路径 --property nameLOG_FILE value${LOG_PATH}/application.log/!-- 定义警告级别日志文件名称和路径 --property nameWARN_LOG_FILE value${LOG_PATH}/warn.log/!-- 定义错误级别日志文件名称和路径 --property nameERROR_LOG_FILE value${LOG_PATH}/error.log/!-- 定义指定目录service日志文件名称和路径 --property nameSERVICE_LOG_FILE value${LOG_PATH}/service.log/!-- 将日志滚动输出到application.log文件中 --appender nameAPPLICATIONclassch.qos.logback.core.rolling.RollingFileAppender!-- 输出文件目的地 --file${LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_FILE}.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 摘取出WARN级别日志输出到warn.log中 --appender nameWARN classch.qos.logback.core.rolling.RollingFileAppenderfile${WARN_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/warn.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy!-- 日志过滤器将WARN相关日志过滤出来 --filter classch.qos.logback.classic.filter.ThresholdFilterlevelWARN/level/filter/appender!-- 摘取出ERROR级别日志输出到error.log中 --appender nameERROR classch.qos.logback.core.rolling.RollingFileAppenderfile${ERROR_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/error.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy!-- 日志过滤器将ERROR相关日志过滤出来 --filter classch.qos.logback.classic.filter.ThresholdFilterlevelERROR/level/filter/appender!-- 配置控制台输出 --appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder/appender!-- 定义指定目录service的appender --appender nameSERVICE classch.qos.logback.core.rolling.RollingFileAppenderfile${SERVICE_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/service.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 配置扫描包路径追加日志到service的appender中 --!--若是additivity设为true则子Logger不止会在自己的appender里输出还会在root的logger的appender里输出--logger namecom.example.logback.service levelINFO additivitytrueappender-ref refSERVICE//logger!-- 配置输出级别 --root levelINFO!-- 加入控制台输出 --appender-ref refCONSOLE/!-- 加入APPLICATION输出 --appender-ref refAPPLICATION/!-- 加入WARN日志输出 --appender-ref refWARN/!-- 加入ERROR日志输出 --appender-ref refERROR//root
/configuration
启动只有又会多一个service.log如下 2、切面日志打印
可能有些同学不知道这个是啥这里我举个场景就好理解了。
假设现在的项目结构如下增加了一个HttpAspect切面类作用是监控controller中每个方法的入参、出参、接口耗时等信息这个功能相信大家都做过。 HttpAspect代码如下
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 ;
}
相信细心的同学已经发现问题了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 resourceorg/springframework/boot/logging/logback/defaults.xml/!-- 定义应用名称区分应用 --property nameAPP_NAME valuelogback-test/!-- 定义日志文件的输出路径 --property nameLOG_PATH value${user.home}/logs/${APP_NAME}/!-- 定义日志文件名称和路径 --property nameLOG_FILE value${LOG_PATH}/application.log/!-- 定义警告级别日志文件名称和路径 --property nameWARN_LOG_FILE value${LOG_PATH}/warn.log/!-- 定义错误级别日志文件名称和路径 --property nameERROR_LOG_FILE value${LOG_PATH}/error.log/!-- 定义指定目录service日志文件名称和路径 --property nameSERVICE_LOG_FILE value${LOG_PATH}/service.log/!-- 定义指定目录HTTP日志文件名称和路径 --property nameHTTP_PACKAGE_LOG_FILE value${LOG_PATH}/http-package.log/!-- 定义指定类topic方式的日志文件名称和路径 --property nameHTTP_TOPIC_LOG_FILE value${LOG_PATH}/http-topic.log/!-- 将日志滚动输出到application.log文件中 --appender nameAPPLICATIONclassch.qos.logback.core.rolling.RollingFileAppender!-- 输出文件目的地 --file${LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_FILE}.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 摘取出WARN级别日志输出到warn.log中 --appender nameWARN classch.qos.logback.core.rolling.RollingFileAppenderfile${WARN_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/warn.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy!-- 日志过滤器将WARN相关日志过滤出来 --filter classch.qos.logback.classic.filter.ThresholdFilterlevelWARN/level/filter/appender!-- 摘取出ERROR级别日志输出到error.log中 --appender nameERROR classch.qos.logback.core.rolling.RollingFileAppenderfile${ERROR_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/error.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy!-- 日志过滤器将ERROR相关日志过滤出来 --filter classch.qos.logback.classic.filter.ThresholdFilterlevelERROR/level/filter/appender!-- 配置控制台输出 --appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder/appender!-- 定义指定目录service的appender --appender nameSERVICE classch.qos.logback.core.rolling.RollingFileAppenderfile${SERVICE_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/service.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 定义指定目录HTTP-PACKAGE的appender --appender nameHTTP-PACKAGE classch.qos.logback.core.rolling.RollingFileAppenderfile${HTTP_PACKAGE_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/http-package.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 配置扫描包路径追加日志到service的appender中 --!--若是additivity设为true则子Logger不止会在自己的appender里输出还会在root的logger的appender里输出--logger namecom.example.logback.service levelINFO additivitytrueappender-ref refSERVICE//logger!-- 配置扫描包路径追加日志到HTTP-PACKAGE的appender中 --!--若是additivity设为true则子Logger不止会在自己的appender里输出还会在root的logger的appender里输出--logger namecom.example.logback.config levelINFO additivityfalseappender-ref refHTTP-PACKAGE//logger!-- 配置输出级别 --root levelINFO!-- 加入控制台输出 --appender-ref refCONSOLE/!-- 加入APPLICATION输出 --appender-ref refAPPLICATION/!-- 加入WARN日志输出 --appender-ref refWARN/!-- 加入ERROR日志输出 --appender-ref refERROR//root
/configuration
第三步、定义指定类topic的appender
configuration!-- 默认的一些配置 --include resourceorg/springframework/boot/logging/logback/defaults.xml/!-- 定义应用名称区分应用 --property nameAPP_NAME valuelogback-test/!-- 定义日志文件的输出路径 --property nameLOG_PATH value${user.home}/logs/${APP_NAME}/!-- 定义日志文件名称和路径 --property nameLOG_FILE value${LOG_PATH}/application.log/!-- 定义警告级别日志文件名称和路径 --property nameWARN_LOG_FILE value${LOG_PATH}/warn.log/!-- 定义错误级别日志文件名称和路径 --property nameERROR_LOG_FILE value${LOG_PATH}/error.log/!-- 定义指定目录service日志文件名称和路径 --property nameSERVICE_LOG_FILE value${LOG_PATH}/service.log/!-- 定义指定目录HTTP日志文件名称和路径 --property nameHTTP_PACKAGE_LOG_FILE value${LOG_PATH}/http-package.log/!-- 定义指定类topic方式的日志文件名称和路径 --property nameHTTP_TOPIC_LOG_FILE value${LOG_PATH}/http-topic.log/!-- 将日志滚动输出到application.log文件中 --appender nameAPPLICATIONclassch.qos.logback.core.rolling.RollingFileAppender!-- 输出文件目的地 --file${LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_FILE}.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 摘取出WARN级别日志输出到warn.log中 --appender nameWARN classch.qos.logback.core.rolling.RollingFileAppenderfile${WARN_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/warn.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy!-- 日志过滤器将WARN相关日志过滤出来 --filter classch.qos.logback.classic.filter.ThresholdFilterlevelWARN/level/filter/appender!-- 摘取出ERROR级别日志输出到error.log中 --appender nameERROR classch.qos.logback.core.rolling.RollingFileAppenderfile${ERROR_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/error.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy!-- 日志过滤器将ERROR相关日志过滤出来 --filter classch.qos.logback.classic.filter.ThresholdFilterlevelERROR/level/filter/appender!-- 配置控制台输出 --appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder/appender!-- 定义指定目录service的appender --appender nameSERVICE classch.qos.logback.core.rolling.RollingFileAppenderfile${SERVICE_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/service.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 定义指定目录HTTP-PACKAGE的appender --appender nameHTTP-PACKAGE classch.qos.logback.core.rolling.RollingFileAppenderfile${HTTP_PACKAGE_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/http-package.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 定义指定类topic的appender --appender nameHTTP-TOPIC classch.qos.logback.core.rolling.RollingFileAppenderfile${HTTP_TOPIC_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/http-topic.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 配置扫描包路径追加日志到service的appender中 --!--若是additivity设为true则子Logger不止会在自己的appender里输出还会在root的logger的appender里输出--logger namecom.example.logback.service levelINFO additivitytrueappender-ref refSERVICE//logger!-- 配置扫描包路径追加日志到HTTP-PACKAGE的appender中 --!--若是additivity设为true则子Logger不止会在自己的appender里输出还会在root的logger的appender里输出--logger namecom.example.logback.config levelINFO additivityfalseappender-ref refHTTP-PACKAGE//logger!-- 配置输出级别 --root levelINFO!-- 加入控制台输出 --appender-ref refCONSOLE/!-- 加入APPLICATION输出 --appender-ref refAPPLICATION/!-- 加入WARN日志输出 --appender-ref refWARN/!-- 加入ERROR日志输出 --appender-ref refERROR//root
/configuration
第四步、追加日志到指定类topic的appender中
configuration!-- 默认的一些配置 --include resourceorg/springframework/boot/logging/logback/defaults.xml/!-- 定义应用名称区分应用 --property nameAPP_NAME valuelogback-test/!-- 定义日志文件的输出路径 --property nameLOG_PATH value${user.home}/logs/${APP_NAME}/!-- 定义日志文件名称和路径 --property nameLOG_FILE value${LOG_PATH}/application.log/!-- 定义警告级别日志文件名称和路径 --property nameWARN_LOG_FILE value${LOG_PATH}/warn.log/!-- 定义错误级别日志文件名称和路径 --property nameERROR_LOG_FILE value${LOG_PATH}/error.log/!-- 定义指定目录service日志文件名称和路径 --property nameSERVICE_LOG_FILE value${LOG_PATH}/service.log/!-- 定义指定目录HTTP日志文件名称和路径 --property nameHTTP_PACKAGE_LOG_FILE value${LOG_PATH}/http-package.log/!-- 定义指定类topic方式的日志文件名称和路径 --property nameHTTP_TOPIC_LOG_FILE value${LOG_PATH}/http-topic.log/!-- 将日志滚动输出到application.log文件中 --appender nameAPPLICATIONclassch.qos.logback.core.rolling.RollingFileAppender!-- 输出文件目的地 --file${LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_FILE}.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 摘取出WARN级别日志输出到warn.log中 --appender nameWARN classch.qos.logback.core.rolling.RollingFileAppenderfile${WARN_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/warn.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy!-- 日志过滤器将WARN相关日志过滤出来 --filter classch.qos.logback.classic.filter.ThresholdFilterlevelWARN/level/filter/appender!-- 摘取出ERROR级别日志输出到error.log中 --appender nameERROR classch.qos.logback.core.rolling.RollingFileAppenderfile${ERROR_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/error.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy!-- 日志过滤器将ERROR相关日志过滤出来 --filter classch.qos.logback.classic.filter.ThresholdFilterlevelERROR/level/filter/appender!-- 配置控制台输出 --appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder/appender!-- 定义指定目录service的appender --appender nameSERVICE classch.qos.logback.core.rolling.RollingFileAppenderfile${SERVICE_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/service.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 定义指定目录HTTP-PACKAGE的appender --appender nameHTTP-PACKAGE classch.qos.logback.core.rolling.RollingFileAppenderfile${HTTP_PACKAGE_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/http-package.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 定义指定类topic的appender --appender nameHTTP-TOPIC classch.qos.logback.core.rolling.RollingFileAppenderfile${HTTP_TOPIC_LOG_FILE}/fileencoder!-- 使用默认的输出格式打印 --pattern${CONSOLE_LOG_PATTERN}/patterncharsetutf8/charset/encoder!-- 设置 RollingPolicy 属性用于配置文件大小限制保留天数、文件名格式 --rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 文件命名格式 --fileNamePattern${LOG_PATH}/http-topic.%d{yyyy-MM-dd}.%i.log/fileNamePattern!-- 文件保留最大天数 --maxHistory7/maxHistory!-- 文件大小限制 --maxFileSize50MB/maxFileSize!-- 文件总大小 --totalSizeCap500MB/totalSizeCap/rollingPolicy/appender!-- 配置扫描包路径追加日志到service的appender中 --!--若是additivity设为true则子Logger不止会在自己的appender里输出还会在root的logger的appender里输出--logger namecom.example.logback.service levelINFO additivitytrueappender-ref refSERVICE//logger!-- 配置扫描包路径追加日志到HTTP-PACKAGE的appender中 --!--若是additivity设为true则子Logger不止会在自己的appender里输出还会在root的logger的appender里输出--logger namecom.example.logback.config levelINFO additivityfalseappender-ref refHTTP-PACKAGE//logger!-- 配置扫描包路径追加日志到HTTP-TOPIC的appender中 --!--若是additivity设为true则子Logger不止会在自己的appender里输出还会在root的logger的appender里输出--logger namehttp-log levelINFO additivityfalseappender-ref refHTTP-TOPIC//logger!-- 配置输出级别 --root levelINFO!-- 加入控制台输出 --appender-ref refCONSOLE/!-- 加入APPLICATION输出 --appender-ref refAPPLICATION/!-- 加入WARN日志输出 --appender-ref refWARN/!-- 加入ERROR日志输出 --appender-ref refERROR//root
/configuration 日志目录中多了一个文件http-topic如下 五、写在最后
这篇文章篇幅比较长主要是配置文件贴的比较多我本来是想每一步只贴关键代码的但成文之后看起来有点费劲所以每一步都贴了全量的配置。xml文件我觉得是比较难阅读的一种文档里面的标签又多又乱没有顺序可言。如果不是从第一个标签开始看根本不知道标签之间的依赖关系为了方便大家阅读我在博客园也发布一篇SpringBoot项目从0到1配置logback日志打印
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/932388.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!