Files
lianlonggangandClaude 433ea5a995 feat: 支持多系统独立认证与日志下载
- 删除 BaseConfig,认证信息并入 LogFileConfig.SystemItem
- 每个系统独立配置用户名/密码/RSA公钥/网关地址/登录路径
- 支持 subPath 自定义每个系统的存储子目录
- 文件路径隔离:{path}/{subPath}/{serviceName}
- 单个系统登录/下载失败不影响其他系统

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-15 16:09:43 +08:00

78 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## 项目概述
基于 **Solon 3.9.0** 框架的日志文件定时下载工具。通过远程网关 API 认证后,拉取多个微服务实例的日志文件(`.log``.gz`)到本地磁盘,并管理本地日志文件的清理与归档。
- Java 17Maven 构建
- 启动类:`com.renkang.rkutils.App`
- 配置文件:`src/main/resources/app.yml`(外挂 `conf/app-xj.yml`
## 构建与运行
```bash
# 编译打包
mvn clean package -DskipTests
# 直接运行(Solon Maven Plugin
mvn solon:run
```
当前无测试用例。
## 架构概览
```
App.java (入口, @SolonMain + @EnableScheduling)
├── DownFileJob — 定时任务, cron: 0 30 * * * ? (每小时第30分钟)
└── LogFileService — 接口, 定义 downloadLogFile()
└── LogFileServiceImpl — 核心下载逻辑
├── BaseConfig — ${base}: username/password/publicKey/gatewayUrl
└── LogFileConfig — ${file}: path/services (name + insCount)
```
### 核心流程 (LogFileServiceImpl.downloadLogFile)
1. **登录认证**RSA 公钥加密密码 → POST `/sys/mLogin` → 获取 JWT token
2. **获取文件列表**token 鉴权 → GET `/{serviceName}/service/log/files` → JSON 中取 `result.records`
3. **本地清理**:删除今日之前的 `.log` 文件;将不属于当前实例前缀的历史文件移入 `tmp/` 目录
4. **下载文件**
- `.gz` 压缩文件(已归档)→ 下载到 `{path}/{serviceName}/archive/`,已存在则跳过
- `.log` 文件 → 下载到 `{path}/{serviceName}/`,与本地同名文件比大小:远程更大则覆盖,更小则新建序号文件(`.log.001` 类推)
### 配置结构
```yaml
solon.config.load: # 外挂配置文件
solon.logging.appender: # 控制台 + 文件日志
solon.scheduling.job: # downFileJob 定时任务配置
base: # 网关认证信息(BaseConfig
username / password / publicKey / gatewayUrl
file: # 日志下载配置(LogFileConfig
path: D:/xjlogs
services:
- name: jeecg-system
insCount: 2
```
### 关键依赖
| 依赖 | 用途 |
|------|------|
| solon-lib | Solon 核心 |
| solon-scheduling-simple | `@Scheduled` 定时任务支持 |
| solon-logging-logback-jakarta | 日志框架(Logback |
| solon-net-httputils | HTTP 客户端(`HttpUtils.http()` |
| fastjson2 | JSON 解析 |
| lombok | 注解简化(`@Data`, `@Slf4j` |
| solon-maven-plugin | Maven 打包/运行插件 |
### 注意事项
- `BaseConfig` 中的密码通过 RSA 公钥加密后传输,`RSAUtil``util` 包)只提供公钥加密
- `LogFileServiceImpl.countUniquePrefixes()` 统计文件名最后一个 `_` 前的部分作为实例前缀,用于判断是否有实例变更
- 日志文件路径使用硬编码 `/` 分隔符,在 Windows 本地运行时 Java 会正确处理
- `solon.config.load` 指向 `conf/app-xj.yml` 作为外挂配置覆盖,该文件不在仓库内