外貿(mào)建站 wordpress寧波網(wǎng)絡(luò)營(yíng)銷公司有哪些
文章目錄
- 前言
- 一、內(nèi)置配置
- 1. 關(guān)聯(lián)依賴
- 2. 內(nèi)置配置
- 二、自定義配置
- 1. 日志級(jí)別
- 2. 彩色日志
- 3. 自定義配置
- 4. 增加打印語(yǔ)句
- 5. 效果展示
- 總結(jié)
前言
網(wǎng)關(guān)層作為我們程序的主入口,有著至關(guān)重要的作用,下面我們通過自定義Logback配置增強(qiáng)網(wǎng)關(guān)層的日志輸出,為我們的網(wǎng)關(guān)提供更加詳細(xì)和更加細(xì)化的日志輸出。
大家有沒有好奇過一件事,為什么我們的Spring Boot項(xiàng)目新建完,日志組件就能刷刷地打印呢?這是因?yàn)镾pring Boot幫助我們集成了Logback并定義了默認(rèn)的logger和appender,接下來我們來進(jìn)行詳細(xì)的解析。
一、內(nèi)置配置
1. 關(guān)聯(lián)依賴
spring-boot-starter-web>spring-boot-starter>spring-boot-starter-logging>logback-classic>logback-core
2. 內(nèi)置配置
base.xml:定義了基本配置和引入其他配置文件
defaults.xml:定義了彩色日志,日志變量和日志logger
console-appender.xml:定義了控制臺(tái)輸出appender
file-appender.xml:定義了文件輸出appender
二、自定義配置
我們自定義配置生效后,Spring Boot內(nèi)置配置就不再生效,大家要知道這點(diǎn)
設(shè)計(jì)思路:
- debug.log(存儲(chǔ)debug及高級(jí)別日志)
- info.log(存儲(chǔ)info及高級(jí)別日志)
- error.log(存儲(chǔ)error及高級(jí)別日志)
1. 日志級(jí)別
我們只關(guān)注三個(gè)常用的:DEBUG、INFO、ERROR即可
TRACE<DEBUG<INFO<WARN<ERROR<FATAL
2. 彩色日志
顏色
blue
cyan
green
magenta
red
yellow
樣式
bold
(粗體)faint
(淡色)highlight
(高亮)
3. 自定義配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration><!-- 引入Spring Boot的默認(rèn)logback配置 --><property name="CONSOLE_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 name="FILE_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 resource="org/springframework/boot/logging/logback/defaults.xml"/><!-- 自定義控制臺(tái)輸出模板 --><property name="LOG_HOME" value="../logs/gateway/"/><property name="LOG_FILE" value="gateway"/><property name="LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START" value="false"/><property name="LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE" value="10MB"/><property name="LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP" value="0"/><property name="LOGBACK_ROLLINGPOLICY_MAX_HISTORY" value="7"/><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>${CONSOLE_LOG_THRESHOLD}</level></filter><encoder><pattern>${CONSOLE_PATTERN}</pattern><charset>${CONSOLE_LOG_CHARSET}</charset></encoder></appender><appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>DEBUG</level></filter><encoder><pattern>${FILE_PATTERN}</pattern><charset>${FILE_LOG_CHARSET}</charset></encoder><file>${LOG_HOME}${LOG_FILE}_debug.log</file><!--大小和時(shí)間基于滾動(dòng)策略--><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_HOME}${LOG_FILE}_debug.%d{yyyy-MM-dd}.%i.gz</fileNamePattern><cleanHistoryOnStart>${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart><maxFileSize>${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}</maxFileSize><totalSizeCap>${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}</totalSizeCap><maxHistory>${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-7}</maxHistory></rollingPolicy></appender><appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>INFO</level></filter><encoder><pattern>${FILE_PATTERN}</pattern><charset>${FILE_LOG_CHARSET}</charset></encoder><file>${LOG_HOME}${LOG_FILE}_info.log</file><!--大小和時(shí)間基于滾動(dòng)策略--><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_HOME}${LOG_FILE}_info.%d{yyyy-MM-dd}.%i.gz</fileNamePattern><cleanHistoryOnStart>${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart><maxFileSize>${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}</maxFileSize><totalSizeCap>${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}</totalSizeCap><maxHistory>${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-7}</maxHistory></rollingPolicy></appender><appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>ERROR</level></filter><encoder><pattern>${FILE_PATTERN}</pattern><charset>${FILE_LOG_CHARSET}</charset></encoder><file>${LOG_HOME}${LOG_FILE}_error.log</file><!--大小和時(shí)間基于滾動(dòng)策略--><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_HOME}${LOG_FILE}_error.%d{yyyy-MM-dd}.%i.gz</fileNamePattern><cleanHistoryOnStart>${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart><maxFileSize>${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}</maxFileSize><totalSizeCap>${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}</totalSizeCap><maxHistory>${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-7}</maxHistory></rollingPolicy></appender><!-- 設(shè)置特定包的日志級(jí)別 --><logger name="org.springframework" level="INFO"/><logger name="org.hibernate" level="INFO"/><logger name="com.alibaba" level="INFO"/><logger name="io.netty" level="INFO"/><logger name="reactor.netty" level="INFO"/><!-- Root Logger --><root level="DEBUG"><appender-ref ref="CONSOLE"/><appender-ref ref="DEBUG_FILE"/><appender-ref ref="INFO_FILE"/><appender-ref ref="ERROR_FILE"/></root>
</configuration>
4. 增加打印語(yǔ)句
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. 效果展示
總結(jié)
回到頂部
有了詳細(xì)的日志文件記錄,我們就再也不怕程序報(bào)錯(cuò)了,加油,奧利給!