# log-collect **Repository Path**: tanxii/log-collect ## Basic Information - **Project Name**: log-collect - **Description**: 日志收集 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-12 - **Last Updated**: 2026-09-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Log Collect 日志收集工具 | A Log Collection Desktop Application ## 项目简介 Log Collect 是一款基于 Wails 框架开发的桌面应用程序,用于通过 SSH 远程连接服务器并实时收集、查看日志文件。 ## 技术栈 - **前端**: Vue 3 + TypeScript + Vite - **后端**: Go + Wails - **远程连接**: SSH ## 功能特性 - **服务器管理**: 添加、编辑、删除远程服务器配置 - **SSH 连接**: 支持用户名密码和 SSH 密钥认证 - **日志查看**: 实时 tail 远程日志文件 - **目录浏览**: 浏览远程服务器目录结构 - **安全存储**: 密码加密存储 ## 快速开始 ### 环境要求 - Go 1.26.6(包含当前标准库安全修复) - Node.js 24 - Wails CLI 2.13.0 - 生成 Windows 安装包时需要 NSIS;正式发布还需要 Windows SDK `signtool.exe` 和代码签名证书 ### 安装依赖 ```bash # 安装前端依赖 cd frontend npm ci # 安装后端依赖 cd .. go mod download ``` ### 开发模式 ```bash # 启动开发服务器 wails dev ``` ### 构建应用 ```bash # 构建 Windows 应用 wails build # 正式签名安装包(默认强制代码签名) $env:TANXIILOG_SIGNING_CERT_THUMBPRINT = '<证书指纹>' powershell -ExecutionPolicy Bypass -File scripts/package-windows.ps1 # 当前项目允许显式豁免签名;产物清单会记录 unsigned-waiver powershell -ExecutionPolicy Bypass -File scripts/package-windows.ps1 -AllowUnsigned ``` 发布脚本默认拒绝脏工作区,并为 EXE 和安装包生成 SHA-256 及 `release-manifest.json`。正式分发前必须完成 [RELEASE_CHECKLIST.md](RELEASE_CHECKLIST.md); 未签名发布必须在发布说明中明确披露,且不得使用 `-AllowDirty` 产物。 真实 SSH 集成测试使用独立测试账号和固定主机指纹: ```powershell powershell -ExecutionPolicy Bypass -File scripts/test-live-ssh.ps1 ``` 所需环境变量及干净 Windows 虚拟机验收步骤见发布清单。 ## 项目结构 ``` log-collect/ ├── frontend/ # Vue 3 前端项目 │ ├── src/ │ │ ├── components/ # Vue 组件 │ │ ├── App.vue # 主应用组件 │ │ └── main.ts # 入口文件 │ └── package.json ├── backend/ # Go 后端 │ ├── app/ # 应用核心逻辑 │ ├── internal/ │ │ ├── config/ # 配置管理 │ │ ├── models/ # 数据模型 │ │ ├── secret/ # 加密解密 │ │ └── ssh/ # SSH 客户端 │ └── app.go ├── main.go # 程序入口 └── wails.json # Wails 配置 ``` ## 配置说明 默认配置存储在可执行程序旁的 `config/` 文件夹中(安装目录需要具备写权限): - 系统设置:`config/settings.json` - 服务器配置:`config/servers.json` - 工作区与告警状态:`config/ui-state.json` - SSH 主机密钥:`config/known_hosts` - 事故快照:`config/incidents/` 也可以在设置面板中选择其他数据目录;切换时会复制已知应用数据并保留旧目录作为备份。服务器密码在 Windows 上使用当前用户的 DPAPI 保护。 从旧版本升级时,浏览器中已有的工作区和告警配置会自动迁移到 `config/ui-state.json`,确认写入成功后才会清理旧数据。 ## 使用说明 1. 添加服务器:输入服务器 IP、端口、用户名、密码或 SSH 密钥路径(支持 `~` 和环境变量路径) 2. 连接服务器:点击连接按钮建立 SSH 连接 3. 添加日志文件:选择远程服务器上的日志文件路径,路径中可以包含空格 4. 实时查看:启动 tail 命令实时查看日志内容 ### 服务集群日志 如果同一个服务部署在多台服务器上,可在左侧打开“服务集群”,创建一个逻辑服务并选择多个已配置的 SSH 服务器作为节点。为集群配置日志路径模板(支持 `${instance}`、`${role}`、`${nodeId}` 和 `${serverId}`),保存后点击“连接并查看”即可并行 tail 所有节点。节点连接和重连彼此独立,部分节点故障不会影响其他节点;日志窗口会以“集群 / 节点”作为来源名称,并继续出现在统一时间线中。 集群配置保存在当前数据目录的 `clusters.json`,只引用服务器 ID,不重复保存 SSH 凭据。 ## 许可证 Apache License 2.0