refactor(project): 重构项目配置和异常处理机制

- 更新 Docker Compose 配置从版本 1 到 3.8,并修改服务构建方式
- 将异常处理中的 ResponseCode 替换为 SystemStatus 枚举
- 统一全局异常处理器返回类型为 RetObj,替换原有的 GenericResponse
- 修复 JWT 工具类中的空指针判断逻辑错误
- 优化 RSA 加密工具类,使用 Java 自带 Base64 实现替代 Apache 工具类
- 添加 Spring Security 密码编码器支持,增强用户密码安全性
- 完善日志配置文件,增加多种环境的日志输出策略
- 优化 Dockerfile 使用 JDK 17 环境并改进构建参数配置
This commit is contained in:
海言
2026-05-28 15:30:32 +08:00
parent 055987541c
commit e2de84d5a9
14 changed files with 180 additions and 92 deletions

View File

@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds">
<contextName>xf-boot-base</contextName>
<property name="log_home" value="logs"/>
<property name="log_pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"/>
<!-- 控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log_pattern}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- Info本地日志 -->
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log_home}/base-info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log_home}/base-%d{yyyy-MM-dd}-info.%i.log</fileNamePattern>
<maxFileSize>200MB</maxFileSize>
<maxHistory>30</maxHistory>
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>${log_pattern}</pattern>
<charset>UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<!-- Error本地日志 -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log_home}/base-error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log_home}/base-%d{yyyy-MM-dd}-error.%i.log</fileNamePattern>
<maxFileSize>200MB</maxFileSize>
<maxHistory>30</maxHistory>
<totalSizeCap>5GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>${log_pattern}</pattern>
<charset>UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<!-- Logstash输出动态读取配置 -->
<springProperty scope="context" name="logIps" source="logstash.ips" defaultValue="127.0.0.1:4560"/>
<springProperty scope="context" name="appName" source="spring.application.name" defaultValue="xf-boot-base"/>
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>${logIps}</destination>
<keepAliveDuration>5 minutes</keepAliveDuration>
<connectionTimeout>5 seconds</connectionTimeout>
<reconnectionDelay>30 seconds</reconnectionDelay>
<waitStrategyType>sleeping</waitStrategyType>
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{"host":"${HOSTNAME}", "app_name":"${appName}"}</customFields>
</encoder>
</appender>
<!-- 开发与本地环境 -->
<springProfile name="dev,local">
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="INFO_FILE"/>
<appender-ref ref="ERROR_FILE"/>
</root>
</springProfile>
<!-- 测试与预发布/生产环境 -->
<springProfile name="pre,prod">
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="INFO_FILE"/>
<appender-ref ref="ERROR_FILE"/>
<appender-ref ref="LOGSTASH"/>
</root>
</springProfile>
</configuration>