feat: Kotlin+Solon 重构医院前置机(业务+被控端+Agent+升级流程)
主程序(com.hospital.front): - Kotlin 2.0.21 + Solon 3.10.7 + MyBatis-Plus + HikariCP + Logback - HospitalAdapter 策略模式:5 家医院(xinglongyuan/qingyang/ningxia/yanan/jinghe)+ dev Mock - 三方言 Mapper:bsm(Oracle)/ nx / ya(SqlServer),存储过程参数原样迁移 - 20 个业务接口(/order/*)+ 11 个被控端接口(/api/admin/*,Token 鉴权+脱敏+防穿越) - 全局异常处理、Result 统一响应、业务开关热更新 Agent(com.hospital.agent,独立进程,单 jar 双 main): - WebSocket 主动出站连 B 端(指数退避重连),心跳转发主程序健康 - ProcessGuard 看门狗:3 次探测失败自动拉起主程序 - UpgradeCommand:下载→SHA256 校验→备份→替换→拉起→健康检查→失败自动回滚 - 命令分发:PING/日志/配置/重启等 10 类命令 部署(pac/): - Windows Server 脚本(start.bat/agent.bat/WinSW 服务),纯 ASCII 注释防 GBK 错乱 - 5 家医院配置模板 + agent.properties Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Logback 配置(Solon 4.0.6 集成)
|
||||
- 控制台:开发期实时输出
|
||||
- info.log:业务日志(50MB/30天滚动)
|
||||
- error.log:错误日志(独立)
|
||||
- 异步 appender:高并发不阻塞业务
|
||||
|
||||
Step 8 将追加自定义 WebSocketAppender,用于实时日志推送至 B 端。
|
||||
-->
|
||||
<configuration debug="false" scan="true" scanPeriod="30 seconds">
|
||||
|
||||
<!-- 日志路径(可通过 -Dlog.path=xxx 覆盖) -->
|
||||
<property name="LOG_PATH" value="${log.path:-./log}"/>
|
||||
|
||||
<!-- ==================== 控制台 ==================== -->
|
||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger{40} - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- ==================== 业务日志 info.log ==================== -->
|
||||
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${LOG_PATH}/info.log</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_PATH}/info.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
|
||||
<maxFileSize>50MB</maxFileSize>
|
||||
<maxHistory>30</maxHistory>
|
||||
<totalSizeCap>5GB</totalSizeCap>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- ==================== 错误日志 error.log ==================== -->
|
||||
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${LOG_PATH}/error.log</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_PATH}/error.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
|
||||
<maxFileSize>50MB</maxFileSize>
|
||||
<maxHistory>30</maxHistory>
|
||||
<totalSizeCap>2GB</totalSizeCap>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||
<level>ERROR</level>
|
||||
</filter>
|
||||
</appender>
|
||||
|
||||
<!-- ==================== 异步包装(不阻塞业务) ==================== -->
|
||||
<appender name="ASYNC_INFO" class="ch.qos.logback.classic.AsyncAppender">
|
||||
<queueSize>2048</queueSize>
|
||||
<discardingThreshold>0</discardingThreshold>
|
||||
<neverBlock>true</neverBlock>
|
||||
<appender-ref ref="INFO_FILE"/>
|
||||
</appender>
|
||||
|
||||
<appender name="ASYNC_ERROR" class="ch.qos.logback.classic.AsyncAppender">
|
||||
<queueSize>1024</queueSize>
|
||||
<discardingThreshold>0</discardingThreshold>
|
||||
<neverBlock>true</neverBlock>
|
||||
<appender-ref ref="ERROR_FILE"/>
|
||||
</appender>
|
||||
|
||||
<!-- ==================== 根日志 ==================== -->
|
||||
<root level="INFO">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
<appender-ref ref="ASYNC_INFO"/>
|
||||
<appender-ref ref="ASYNC_ERROR"/>
|
||||
</root>
|
||||
|
||||
<!-- ==================== 框架级别 ==================== -->
|
||||
<logger name="org.noear" level="WARN"/>
|
||||
<logger name="org.springframework" level="WARN"/>
|
||||
<logger name="com.baomidou.mybatisplus" level="WARN"/>
|
||||
<logger name="org.mybatis" level="WARN"/>
|
||||
|
||||
<!-- ==================== 业务级别(开发期可改 DEBUG) ==================== -->
|
||||
<logger name="com.hospital.front" level="INFO"/>
|
||||
</configuration>
|
||||
Reference in New Issue
Block a user