config(gateway): 配置中心和日志配置外置到Nacos

- 添加Nacos配置中心依赖并启用配置导入功能
- 将网关日志配置外置到Nacos gateway-server.yaml文件
- 将业务模块日志文件路径配置外置到Nacos rdms-common.yaml
- 在pom.xml中设置addResources为false避免占位符不被替换
- 添加logback-spring.xml配置文件用于日志格式化和滚动策略
- 优化日志配置管理方式,实现按环境统一配置
This commit is contained in:
2026-06-22 14:10:29 +08:00
parent d2224e0cfc
commit b4f6eab64c
6 changed files with 70 additions and 10 deletions

View File

@@ -54,6 +54,12 @@
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency> </dependency>
<!-- Config 配置中心相关 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- 工具类相关 --> <!-- 工具类相关 -->
<dependency> <dependency>
<groupId>com.google.guava</groupId> <groupId>com.google.guava</groupId>
@@ -77,6 +83,11 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId> <artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version> <version>${spring.boot.version}</version>
<configuration>
<!-- 必须为 falseaddResources=true 会让 spring-boot:run 直接挂载源 resources 目录、
跳过资源过滤,导致 application.yaml 里的 @nacos.xxx@ 占位符不被替换。 -->
<addResources>false</addResources>
</configuration>
<executions> <executions>
<execution> <execution>
<goals> <goals>

View File

@@ -17,8 +17,13 @@ spring:
main: main:
allow-circular-references: true # 允许循环依赖,因为项目是三层架构,无法避免这个情况。 allow-circular-references: true # 允许循环依赖,因为项目是三层架构,无法避免这个情况。
# 配置中心:网关独享一份 dataId不共用业务侧 rdms-common.yaml其数据库/Redis/MyBatis 等配置网关用不到)。
config:
import:
- nacos:gateway-server.yaml # 网关专属配置(日志路径等),需先在 Nacos 建好该 dataId
cloud: cloud:
# 注册中心连接(值由根 pom 的 nacos.* 属性在打包时注入)。网关仅用 Nacos 做服务发现,不加载配置中心文件。 # 注册中心 + 配置中心连接(值由根 pom 的 nacos.* 属性在打包时注入)。
nacos: nacos:
server-addr: @nacos.server-addr@ server-addr: @nacos.server-addr@
username: @nacos.username@ username: @nacos.username@
@@ -26,6 +31,9 @@ spring:
discovery: discovery:
namespace: @nacos.namespace@ namespace: @nacos.namespace@
group: @nacos.group@ group: @nacos.group@
config:
namespace: @nacos.namespace@
group: @nacos.group@
# Spring Cloud Gateway 配置项,对应 GatewayProperties 类 # Spring Cloud Gateway 配置项,对应 GatewayProperties 类
gateway: gateway:
server: server:
@@ -86,11 +94,7 @@ spring:
server: server:
port: 48080 port: 48080
logging: # 日志配置logging.file.name + level已整体外置到 Nacos gateway-server.yaml按环境统一管理本地不再定义以免覆盖。
file:
name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径
level:
org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR
# Actuator 监控端点的配置项 # Actuator 监控端点的配置项
management: management:

View File

@@ -34,6 +34,7 @@
<appender-ref ref="FILE"/> <appender-ref ref="FILE"/>
</appender> </appender>
<root level="INFO"> <root level="INFO">
<appender-ref ref="STDOUT"/> <appender-ref ref="STDOUT"/>
<!-- 本地环境下如果不想【FILE】打印日志可以注释掉本行 --> <!-- 本地环境下如果不想【FILE】打印日志可以注释掉本行 -->

View File

@@ -58,8 +58,7 @@ server:
keep-alive-timeout: 60s keep-alive-timeout: 60s
logging: logging:
file: # 日志文件路径logging.file.name已外置到 Nacos rdms-common.yaml按环境统一配置本地不再定义以免覆盖 Nacos。
name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径
level: level:
com.njcn.rdms.module.project.dal.mysql: debug # 打印本模块 Mapper 的 SQL 日志 com.njcn.rdms.module.project.dal.mysql: debug # 打印本模块 Mapper 的 SQL 日志

View File

@@ -0,0 +1,46 @@
<configuration>
<!-- 参考 org/springframework/boot/logging/logback/defaults.xml 配置,优化 CONSOLE_LOG_PATTERN、FILE_LOG_PATTERN -->
<!-- 格式化输出:%d 表示日期,%thread 表示线程名,%-5level级别从左显示 5 个字符宽度,%msg日志消息%n是换行符 -->
<!-- CONSOLE_LOG_PATTERN 相比 FILE_LOG_PATTERN 多了 highlight、cyan 等高亮 -->
<property name="CONSOLE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}:%L) - %msg%n"/>
<property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n"/>
<!-- 控制台 Appender -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">     
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- 文件 Appender -->
<!-- 参考 Spring Boot 的 file-appender.xml 编写 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<!-- 日志文件名 -->
<file>${LOG_FILE}</file>
<!-- 滚动策略:基于【每天 + 大小】创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!-- 日志文件输出的文件名 -->
<maxHistory>30</maxHistory> <!-- 日志文件的保留天数 -->
<maxFileSize>10MB</maxFileSize> <!-- 日志文件,到达多少容量,进行滚动 -->
</rollingPolicy>
</appender>
<!-- 异步写入日志,提升性能 -->
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold> <!-- 不丢失日志。默认的,如果队列的 80% 已满,则会丢弃 TRACT、DEBUG、INFO 级别的日志 -->
<queueSize>512</queueSize> <!-- 更改默认的队列的深度,该值会影响性能。默认值为 256 -->
<appender-ref ref="FILE"/>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT"/>
<!-- 本地环境下如果不想【FILE】打印日志可以注释掉本行 -->
<appender-ref ref="ASYNC"/>
<!-- 如果想接入【SkyWalking 日志服务】,可以取消注释掉本行 -->
<!-- <appender-ref ref="SKYWALKING"/> -->
</root>
</configuration>

View File

@@ -58,8 +58,7 @@ server:
# 必须大于网关 spring.cloud.gateway.server.webflux.httpclient.pool.max-idle-time(30s)。 # 必须大于网关 spring.cloud.gateway.server.webflux.httpclient.pool.max-idle-time(30s)。
keep-alive-timeout: 60s keep-alive-timeout: 60s
logging: logging:
file: # 日志文件路径logging.file.name已外置到 Nacos rdms-common.yaml按环境统一配置本地不再定义以免覆盖 Nacos。
name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径
level: level:
com.njcn.rdms.module.system.dal.mysql: debug # 打印本模块 Mapper 的 SQL 日志 com.njcn.rdms.module.system.dal.mysql: debug # 打印本模块 Mapper 的 SQL 日志
com.njcn.rdms.module.system.dal.mysql.logger.ApiErrorLogMapper: INFO # 避免和 GlobalExceptionHandler 重复打印 com.njcn.rdms.module.system.dal.mysql.logger.ApiErrorLogMapper: INFO # 避免和 GlobalExceptionHandler 重复打印