# cloud-platform-logs-to-it **Repository Path**: chenqian1995/cloud-platform-logs-to-it ## Basic Information - **Project Name**: cloud-platform-logs-to-it - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-19 - **Last Updated**: 2026-05-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 日志同步推送服务 ## 项目概述 定时采集多平台业务日志,统一推送至 Kafka 指定 IT 专用 Topic。 ### 技术栈 - JDK 8 - Spring Boot 2.7.18 - MyBatis 2.3.1 - MySQL 8.0 - MongoDB - Kafka - Lombok ### 支持平台 | 平台 | 存储介质 | 数据源标识 | |------|----------|------------| | TSP 平台 | MongoDB | tsp | | 1.0 平台 | MySQL | platform1 | | 电池溯源平台 | MySQL | battery | | 用户中心平台 | MySQL | usercenter | --- ## 快速开始 ### 1. 环境准备 ```bash # JDK 8 java -version # Maven 3.6+ mvn -version # MySQL 8.0+ # MongoDB 4.4+ # Kafka 2.8+ ``` ### 2. 配置数据源 编辑 `src/main/resources/application.yml`,修改以下配置: ```yaml spring: datasource: platform1: jdbc-url: jdbc:mysql://你的 1.0 平台数据库地址:3306/平台 1 数据库 username: 用户名 password: 密码 battery: jdbc-url: jdbc:mysql://你的电池数据库地址:3306/电池数据库 username: 用户名 password: 密码 usercenter: jdbc-url: jdbc:mysql://你的用户中心数据库地址:3306/用户中心数据库 username: 用户名 password: 密码 data: mongodb: uri: mongodb://tsp 用户:tsp 密码@mongodb 地址:27017/tsp_db?authSource=admin kafka: bootstrap-servers: kafka 地址:9092 ``` ### 3. 数据库表结构 #### MySQL 表 (1.0 平台、电池溯源、用户中心) ```sql CREATE TABLE platform_logs ( id BIGINT PRIMARY KEY AUTO_INCREMENT, business_id VARCHAR(64) NOT NULL COMMENT '业务 ID', log_level VARCHAR(20) COMMENT '日志级别', log_content TEXT COMMENT '日志内容', service_name VARCHAR(100) COMMENT '服务名称', operator VARCHAR(50) COMMENT '操作人', operate_time DATETIME COMMENT '操作时间', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', platform VARCHAR(50) COMMENT '平台标识', sync_status TINYINT DEFAULT 0 COMMENT '同步状态 0-未同步 1-已同步 2-同步失败', sync_time DATETIME COMMENT '同步时间', idempotent_key VARCHAR(64) UNIQUE COMMENT '幂等键', INDEX idx_sync_status (sync_status), INDEX idx_create_time (create_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='1.0 平台日志表'; -- 电池溯源平台表名:battery_logs (结构相同) -- 用户中心平台表名:usercenter_logs (结构相同) ``` #### MongoDB 集合 (TSP 平台) ```javascript // 集合名:tsp_logs // 索引: db.tsp_logs.createIndex({ "sync_status": 1 }); db.tsp_logs.createIndex({ "create_time": 1 }); db.tsp_logs.createIndex({ "idempotent_key": 1 }, { unique: true }); ``` ### 4. 编译打包 ```bash cd cloud-platform-logs-to-it mvn clean package -DskipTests ``` ### 5. 启动服务 ```bash java -jar target/cloud-platform-logs-to-it-1.0.0.jar ``` ### 6. 验证运行 查看日志输出: ```bash tail -f logs/logs-sync.log ``` 预期看到类似输出: ``` ========== [TSP] 开始执行日志同步任务 ========== [TSP] 查询到 50 条未同步日志 [TSP] 日志同步成功,businessId=xxx ========== [TSP] 日志同步任务结束,总条数=50, 成功=50, 失败=0, 耗时=1234ms ========== ``` --- ## 配置说明 ### 定时任务频率 ```yaml schedule: tsp: cron: "0 */5 * * * ?" # 每 5 分钟执行一次 batch-size: 100 # 每次拉取 100 条 platform1: cron: "0 */5 * * * ?" batch-size: 100 battery: cron: "0 */5 * * * ?" batch-size: 100 usercenter: cron: "0 */5 * * * ?" batch-size: 100 ``` ### Kafka Topic ```yaml kafka: topic: it-logs: it-platform-logs-topic # IT 专用日志 Topic it-logs-dlq: it-platform-logs-dlq-topic # 死信队列 (可选) ``` --- ## 架构设计 ### 核心抽象类 `AbstractLogSyncService` 封装了所有通用逻辑: - 定时任务执行入口 - 数据源动态切换 - Kafka 消息发送 - 异常捕获和日志打印 - 幂等控制 - 批量状态更新 ### 扩展新平台 只需两步: 1. 创建实体类和 Mapper 2. 创建 Service 实现类继承 `AbstractLogSyncService` ```java @Service public class NewPlatformLogSyncService extends AbstractLogSyncService { // 实现 3 个抽象方法即可 } ``` --- ## 监控与运维 ### 日志文件 - 路径:`logs/logs-sync.log` - 大小:100MB - 保留:30 天 ### 健康检查 ```bash curl http://localhost:8080/actuator/health ``` ### 常见问题 1. **Kafka 连接失败**:检查 `bootstrap-servers` 配置和网络连通性 2. **数据库连接失败**:检查数据源配置和防火墙 3. **定时任务不执行**:检查 cron 表达式和线程池配置 --- ## 版本信息 - 版本:1.0.0 - 创建时间:2026-05-19 - 作者:ff · 严谨专业版