# 个人日志统合分析项目 **Repository Path**: xgotool/log_self_save ## Basic Information - **Project Name**: 个人日志统合分析项目 - **Description**: 统合各个日志并提供统一的展示、分析端 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-16 - **Last Updated**: 2026-07-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # slox_self_save > 多项目集中式请求日志采集、存储与检索系统 ## 概述 slox_self_save 是一个轻量级的日志集中管理平台。各服务通过 HTTP 上报请求日志到中心节点,按天分片存入 SQLite,提供按日搜索与可视化面板。 **核心理念**:简单可靠,不堆中间件。Go 单二进制部署,SQLite 单文件存储,7z 压缩降成本。 ## 核心设计 | 特性 | 说明 | |------|------| | **按天分片** | 每天一个 SQLite 文件,所有项目日志合并存储,一年最多 366 个文件 | | **项目隔离** | 通过 `project` 字段区分,需提前配置,未配置项目自动丢弃 | | **7z 压缩** | 非当日日志自动压缩归档,搜索时按需解压,**需安装 7-Zip** | | **单条写入** | 每次上报一条请求日志(不是批量),服务端异步落盘 | | **按日搜索** | 每次搜索限定在单天内,返回当日结果 | | **时区分割** | 以北京时间(UTC+8)零点为文件切割边界 | | **Vue 3 前端** | 搜索面板、项目配置、日志详情 | ## 前置条件 - Go 1.21+ - 7-Zip(压缩/解压用,确认 `7z` 命令在 PATH 中) ```bash # Ubuntu/Debian sudo apt install p7zip-full # CentOS/RHEL sudo yum install p7zip # macOS brew install p7zip # Windows # 下载安装 https://7-zip.org/,将 7z.exe 所在目录加入 PATH ``` ## 快速开始 ```bash git clone https://gitee.com/xgotool/slox_self_save.git cd slox_self_save go build -o slox_self_save . ./slox_self_save -addr :8080 -data ./data ``` 打开浏览器访问 `http://localhost:8080` ## 日志上报 ```bash curl -X POST http://localhost:8080/api/logs \ -H "Content-Type: application/json" \ -d '{ "project": "my_app", "timestamp": 1718510400, "method": "POST", "url": "https://api.example.com/order", "header": "{\"Content-Type\":\"application/json\",\"X-Request-Id\":\"abc\"}", "request_body": "{\"user_id\":123}", "response_body": "{\"order_id\":456}", "status_code": 200, "duration_ms": 350, "client_ip": "10.0.0.1" }' ``` ## 项目配置 项目需提前在管理后台添加(或通过 API 创建),未配置的项目上报的日志会被直接丢弃。 ``` # 创建项目 POST /api/projects {"name": "my_app", "description": "电商核心服务"} ``` ## 搜索日志 ``` GET /api/search?project=my_app&date=20260616&keyword=timeout&page=1&size=50 ``` > 每次搜索只能指定一个 `date` 参数,格式 `YYYYMMDD`,跨天搜索请多次查询。 ## systemd 服务 ```ini [Unit] Description=slox_self_save After=network.target [Service] Type=simple ExecStart=/usr/local/bin/slox_self_save -addr 127.0.0.1:8099 -data /usr/local/data/slox_self_save -7z /usr/bin/7z Restart=always RestartSec=5 User=logselfsave [Install] WantedBy=multi-user.target ``` ## 监控 访问 `GET /api/health` 查看服务状态。 ```json { "status": "ok", "uptime_seconds": 86400, "daily_files": 15, "disk_usage_mb": 256, "total_logs": 50000, "last_compress": "2026-06-17T03:00:00+08:00", "version": "0.5.0" } ``` ## 数据文件结构 ``` data/ ├── 20260615.db # 6 月 15 日原始数据(所有项目) ├── 20260616.db # 6 月 16 日(当前活跃写入) ├── 20260614.db.7z # 6 月 14 日(已压缩) └── meta.db # 项目元数据 + 文件索引 ``` ## 配置 ```yaml server: addr: ":8080" write_timeout: "30s" max_body_field: 65536 # 单字段(header/request/response)最大 64KB storage: dir: "./data" batch_size: 10 batch_interval: 100ms timezone: "Asia/Shanghai" # 文件分割时区 compress: bin: "7z" level: 5 search: max_results: 1000 default_page_size: 20 ``` ## License MIT