推广网站建设上海公司注册虚拟地址

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,一经查实,立即删除!

相关文章

中国建设银行支付网站广州有哪些网站建设

目录 1. LSTM的背景人工神经网络的进化循环神经网络(RNN)的局限性LSTM的提出背景 2. LSTM的基础理论2.1 LSTM的数学原理遗忘门(Forget Gate)输入门(Input Gate)记忆单元(Cell State)…

2025 年电线电缆厂家最新推荐实力厂家榜单:聚焦优质企业,助力精准选购

在当前工业建设、民生工程及新兴产业快速发展的背景下,电线电缆作为关键基础配套产品,其质量与性能直接影响项目安全与效率。然而,市场上企业数量繁杂,部分产品存在质量不达标、技术落后等问题,导致采购方难以精准…

基于MATLAB的火灾检测GUI系统设计与实现

一、系统架构设计 1. 技术架构 graph TD A[摄像头/视频输入] --> B(图像预处理) B --> C{特征提取} C --> D[火焰检测模块] C --> E[烟雾检测模块] D --> F(GUI显示) E --> F F --> G[报警模块] …

博客园登录bug

今天登录博客园遇到的情况 1、人机验证初次生效,之后尝试新密码后只能弹出提示并不能验证 2、短信登录根本收不到验证码

从零开始:C#实现计算表达式解析与求值——以后缀表达式为例

从零开始:C#实现计算表达式解析与求值——以后缀表达式为例当提到表达式解析技术时,很多人第一反应可能是复杂且精细的递归下降方法。这种方法主要用于构建抽象语法树(AST),虽然功能强大,能够处理复杂的语法结构,…

基于Java+Springboot+Vue开发的鲜花商城管理系统源码+运行步骤

项目简介该项目是基于Java+Springboot+Vue开发的鲜花商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过…

tp3企业网站开发百度云平面设计网站源码

转载地址:https://www.cnblogs.com/qingchunjun/p/4208159.html

简单网站建设规划方案新媒体网站建设十大的经典成功案例

目录 AIoT的协同计算 一、背景与意义 二、原理与方法 三、关键技术与挑战 四、应用与实践 AIoT的协同计算 一、背景与意义 随着物联网和人工智能技术的快速发展,智能物联网(AIoT)成为了一个新兴的前沿领域。在这个领域中,多移动终端设备如智能手机、可穿戴设备、无人…

78建筑网站品牌策划书范文案例

我们都知道,当 Oracle 数据库出现性能故障后,一般会在线上实时诊断数据库性能问题,特别是资源突然打高的场景,这个时候用到ASH的数据,就能很大程度上准确定位问题所在。 Oracle ASH 在 Oracle 数据库中,实…

新开传奇网站韩版小橘子被做h网站

我使用的是airbnb规则进行代码eslint。 会出现保存后,数组或者对象最后一个元素尾随逗号。 此时需要在.eslintrc.js中加入下面代码即可 "comma-dangle": ["error", {"arrays": "never","objects": "never…

第五届无线通信、网络与物联网国际学术会议

第五届无线通信、网络与物联网国际学术会议 2025 5th International Conference on Wireless Communication, Networking and Internet of Things (WCNIoT 2025) 第五届无线通信、网络与物联网国际学术会议(WCNIoT 2…

php自适应网站开发wordpress空间满

知乎传送门:https://www.zhihu.com/question/29355920 为什么图片反复压缩后会普遍会变绿而不是其他颜色?这是大神做的模拟迭代压缩的测试:https://m13253.github.io/JPEGreen/。排名第一的回答已经很仔细了,关于图像压缩不是很懂…

2025 年低温冷水机厂家联系方式推荐:广东弘星制冷专注工业温控,提供定制设备与管家式服务

当前工业领域对温度控制的精准度、稳定性及节能性要求日益提升,新能源、医药化工、半导体等关键行业,更是将可靠的温控系统视为生产流程高效运转的核心保障。然而,市场上部分温控设备存在选型适配性差、能耗过高、故…

git信息提交错误,进行修改

git信息提交错误,进行修改安装(ubuntu) apt update apt install git-filter-repo使用,下面的操作,会把 .git/config 的内容进行修改,所以先做备份 cp .git/config ~/git_config# 邮箱 git filter-repo --email-call…

白城学习做网站的学校传扬互动网站建设公司

1.数据关联性删除判断 示例:比如后台发布了一个待抢购的订单,app已经把此单抢购,因为后台没有及时刷新状态,所有如果要删除或下架此笔订单,必须先要验证此订单的状态是否为已经抢购; 2.数据重复录入问题 示…

武功县住房和城乡建设局官网站ico 众筹网站开发

当使用 keep-alive 缓存组件时,组件中的定时器可能会在组件被缓存后继续运行,从而干扰其他组件的逻辑。为了避免这种情况,可以通过以下方法解决: 1. 在组件的 deactivated 钩子中清理定时器 keep-alive 为缓存的组件提供了 acti…

建一个网站大概需要多少钱找网页设计师

软考程序员考试(初级资格)主要考察计算机基础理论、编程能力及软件开发相关知识。以下是核心知识点总结及备考建议: 一、计算机基础 数制与编码 二进制、八进制、十进制、十六进制转换原码、反码、补码表示(整数与浮点数&#xf…

Java方法之可变个数形参(Varargs)学习笔记

使用场景 在调用方法时,可能会出现形参的类型是确定的,但是形参的个数是不确定的。此时,使用可变个数形参的方法。 格式 (参数类型... 参数名) 说明可变个数形参方法的调用,针对形参的赋值个数,可以为:0个、1个或…

主流TOP10的需求管理工具测评,教你怎么用才最高效! - RAIN

主流TOP10的需求管理工具测评,教你怎么用才最高效!一、前言:选对需求管理工具,先抓住这5个核心要点 做需求管理,说白了就是把“老板想要什么”“客户需要什么”,准确地翻译成“团队该做什么”。这个环节一旦出问…

精准对决:Snipaste 与 FastStone Capture 截图工具优劣势深度剖析

一、引言:聚焦核心需求的工具选型 在日常办公与专业创作中,截图工具的选择直接影响效率 —— 有人需要 “轻量快速,即截即用”,有人则追求 “专业深度,功能全面”。Snipaste 以极简贴图功能圈粉无数,FastStone C…