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

3.1 KiB
Raw Permalink Blame History

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

构建与运行

# 编译打包
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 类推)

配置结构

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 公钥加密后传输,RSAUtilutil 包)只提供公钥加密
  • LogFileServiceImpl.countUniquePrefixes() 统计文件名最后一个 _ 前的部分作为实例前缀,用于判断是否有实例变更
  • 日志文件路径使用硬编码 / 分隔符,在 Windows 本地运行时 Java 会正确处理
  • solon.config.load 指向 conf/app-xj.yml 作为外挂配置覆盖,该文件不在仓库内