北京网站制作百度推广,百度网站登录,企业vi设计欣赏,网页设计一个网站文章目录 前言一、内置配置1. 关联依赖2. 内置配置 二、自定义配置1. 日志级别2. 彩色日志3. 自定义配置4. 增加打印语句5. 效果展示 总结 前言
网关层作为我们程序的主入口#xff0c;有着至关重要的作用#xff0c;下面我们通过自定义Logback配置增强网关层的日志输出有着至关重要的作用下面我们通过自定义Logback配置增强网关层的日志输出为我们的网关提供更加详细和更加细化的日志输出。
大家有没有好奇过一件事为什么我们的Spring Boot项目新建完日志组件就能刷刷地打印呢这是因为Spring Boot帮助我们集成了Logback并定义了默认的logger和appender接下来我们来进行详细的解析。 一、内置配置
1. 关联依赖
spring-boot-starter-webspring-boot-starterspring-boot-starter-logginglogback-classiclogback-core2. 内置配置 base.xml定义了基本配置和引入其他配置文件 defaults.xml定义了彩色日志日志变量和日志logger console-appender.xml定义了控制台输出appender file-appender.xml定义了文件输出appender 二、自定义配置 我们自定义配置生效后Spring Boot内置配置就不再生效大家要知道这点 设计思路 debug.log(存储debug及高级别日志)info.log(存储info及高级别日志)error.log(存储error及高级别日志) 1. 日志级别
我们只关注三个常用的:DEBUG、INFO、ERROR即可
TRACEDEBUGINFOWARNERRORFATAL2. 彩色日志
颜色
bluecyangreenmagentaredyellow
样式
bold粗体faint淡色highlight高亮
3. 自定义配置
?xml version1.0 encodingUTF-8?
configuration!-- 引入Spring Boot的默认logback配置 --property nameCONSOLE_PATTERN value${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(%applicationName[%15.15t]){faint} %clr(${LOG_CORRELATION_PATTERN:-}){faint}%clr(%-40.40logger{39}:%L) %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}/property nameFILE_PATTERN value${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } %applicationName[%t] ${LOG_CORRELATION_PATTERN:-}%-40.40logger{39}:%L : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}/include resourceorg/springframework/boot/logging/logback/defaults.xml/!-- 自定义控制台输出模板 --property nameLOG_HOME value../logs/gateway//property nameLOG_FILE valuegateway/property nameLOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START valuefalse/property nameLOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE value10MB/property nameLOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP value0/property nameLOGBACK_ROLLINGPOLICY_MAX_HISTORY value7/appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderfilter classch.qos.logback.classic.filter.ThresholdFilterlevel${CONSOLE_LOG_THRESHOLD}/level/filterencoderpattern${CONSOLE_PATTERN}/patterncharset${CONSOLE_LOG_CHARSET}/charset/encoder/appenderappender nameDEBUG_FILE classch.qos.logback.core.rolling.RollingFileAppenderfilter classch.qos.logback.classic.filter.ThresholdFilterlevelDEBUG/level/filterencoderpattern${FILE_PATTERN}/patterncharset${FILE_LOG_CHARSET}/charset/encoderfile${LOG_HOME}${LOG_FILE}_debug.log/file!--大小和时间基于滚动策略--rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicyfileNamePattern${LOG_HOME}${LOG_FILE}_debug.%d{yyyy-MM-dd}.%i.gz/fileNamePatterncleanHistoryOnStart${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}/cleanHistoryOnStartmaxFileSize${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}/maxFileSizetotalSizeCap${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}/totalSizeCapmaxHistory${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-7}/maxHistory/rollingPolicy/appenderappender nameINFO_FILE classch.qos.logback.core.rolling.RollingFileAppenderfilter classch.qos.logback.classic.filter.ThresholdFilterlevelINFO/level/filterencoderpattern${FILE_PATTERN}/patterncharset${FILE_LOG_CHARSET}/charset/encoderfile${LOG_HOME}${LOG_FILE}_info.log/file!--大小和时间基于滚动策略--rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicyfileNamePattern${LOG_HOME}${LOG_FILE}_info.%d{yyyy-MM-dd}.%i.gz/fileNamePatterncleanHistoryOnStart${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}/cleanHistoryOnStartmaxFileSize${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}/maxFileSizetotalSizeCap${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}/totalSizeCapmaxHistory${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-7}/maxHistory/rollingPolicy/appenderappender nameERROR_FILE classch.qos.logback.core.rolling.RollingFileAppenderfilter classch.qos.logback.classic.filter.ThresholdFilterlevelERROR/level/filterencoderpattern${FILE_PATTERN}/patterncharset${FILE_LOG_CHARSET}/charset/encoderfile${LOG_HOME}${LOG_FILE}_error.log/file!--大小和时间基于滚动策略--rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicyfileNamePattern${LOG_HOME}${LOG_FILE}_error.%d{yyyy-MM-dd}.%i.gz/fileNamePatterncleanHistoryOnStart${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}/cleanHistoryOnStartmaxFileSize${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}/maxFileSizetotalSizeCap${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}/totalSizeCapmaxHistory${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-7}/maxHistory/rollingPolicy/appender!-- 设置特定包的日志级别 --logger nameorg.springframework levelINFO/logger nameorg.hibernate levelINFO/logger namecom.alibaba levelINFO/logger nameio.netty levelINFO/logger namereactor.netty levelINFO/!-- Root Logger --root levelDEBUGappender-ref refCONSOLE/appender-ref refDEBUG_FILE/appender-ref refINFO_FILE/appender-ref refERROR_FILE//root
/configuration4. 增加打印语句
package org.example.gateway.config;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;/*** Create by zjg on 2024/8/3*/
Component
public class GatewayApplicationAware implements ApplicationContextAware {Logger logger LoggerFactory.getLogger(GatewayApplicationAware.class);Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {logger.debug(Debug log message);logger.info(Info log message);logger.error(Error log message);}
}
5. 效果展示 总结
回到顶部 有了详细的日志文件记录我们就再也不怕程序报错了加油奥利给