147 lines
4.0 KiB
Markdown
147 lines
4.0 KiB
Markdown
# 日志优化说明
|
||
|
||
## 问题描述
|
||
应用运行时产生了大量重复的日志,特别是:
|
||
1. **tokenExpireTimer** 每10秒打印3条日志
|
||
2. **WebSocket 心跳消息** 每30秒打印1条日志
|
||
3. **WebSocket 连接成功** 打印重复的 emoji 日志
|
||
|
||
## 优化内容
|
||
|
||
### 1. tokenExpireTimer 日志优化 (`src/main/window.js`)
|
||
- **优化前**:每10秒打印3条日志
|
||
```
|
||
tokenExpireTimer 触发
|
||
tokenExpireTimer 触发 对比时间戳
|
||
tokenExpireTimer 触发 对比时间戳差距为:23
|
||
```
|
||
- **优化后**:每60秒打印1条日志
|
||
```
|
||
tokenExpireTimer 检查 - 时间差距: 23分钟
|
||
```
|
||
|
||
### 2. WebSocket 心跳消息优化 (`src/main/utils/WebSocketClient.js`)
|
||
- **优化前**:每30秒打印心跳消息
|
||
```
|
||
收到消息: {"cmd":"heartcheck"}
|
||
```
|
||
- **优化后**:心跳消息不打印日志,或仅在调试模式下打印
|
||
|
||
### 3. WebSocket 连接日志优化
|
||
- **优化前**:连接成功时打印3行重复的 emoji
|
||
```
|
||
😀😀😀😀 WebSocket connect create ok 😀😀😀😀
|
||
😀😀😀😀 WebSocket connect create ok 😀😀😀😀
|
||
😀😀😀😀 WebSocket connect create ok 😀😀😀😀
|
||
```
|
||
- **优化后**:简洁的连接成功日志
|
||
```
|
||
WebSocket 连接成功
|
||
WebSocket protocol: [协议]
|
||
```
|
||
|
||
### 4. 日志级别控制系统 (`src/main/utils/logger.js`)
|
||
- 添加日志级别控制功能
|
||
- 支持 ERROR、WARN、INFO、DEBUG 四个级别
|
||
- 可以动态调整日志级别
|
||
|
||
### 5. 托盘菜单日志设置 (`src/main/tray.js`)
|
||
- 添加"日志设置"菜单项
|
||
- 提供三个日志级别选项:
|
||
- 详细日志 (DEBUG)
|
||
- 标准日志 (INFO)
|
||
- 仅错误日志 (ERROR)
|
||
|
||
## 优化效果
|
||
|
||
### 日志数量对比
|
||
- **优化前**:每分钟约 18-21 条日志
|
||
- tokenExpireTimer: 6条/分钟
|
||
- WebSocket 心跳: 2条/分钟
|
||
- 其他日志: 10-13条/分钟
|
||
- **优化后**:每分钟约 2-5 条日志
|
||
- tokenExpireTimer: 1条/分钟
|
||
- WebSocket 心跳: 0条/分钟
|
||
- 其他日志: 1-4条/分钟
|
||
|
||
### 日志文件大小
|
||
- **优化前**:日志文件增长速度快,容易达到几MB
|
||
- **优化后**:日志文件增长缓慢,便于管理和查看
|
||
|
||
## 使用方法
|
||
|
||
### 1. 自动优化
|
||
- 应用启动后自动应用优化设置
|
||
- 无需用户干预
|
||
|
||
### 2. 手动调整日志级别
|
||
1. 右键点击托盘图标
|
||
2. 选择"日志设置"
|
||
3. 选择所需的日志级别:
|
||
- **详细日志**:显示所有日志,包括调试信息
|
||
- **标准日志**:显示重要信息,隐藏调试信息
|
||
- **仅错误日志**:只显示错误和警告信息
|
||
|
||
### 3. 查看日志
|
||
1. 右键点击托盘图标
|
||
2. 选择"查看日志"
|
||
3. 系统会自动打开日志文件所在目录
|
||
|
||
## 日志级别说明
|
||
|
||
### DEBUG (详细日志)
|
||
- 显示所有日志信息
|
||
- 包括调试信息、心跳消息等
|
||
- 适用于开发和调试
|
||
|
||
### INFO (标准日志)
|
||
- 显示重要信息
|
||
- 隐藏调试信息和心跳消息
|
||
- 适用于日常使用
|
||
|
||
### ERROR (仅错误日志)
|
||
- 只显示错误和警告信息
|
||
- 隐藏所有其他日志
|
||
- 适用于生产环境
|
||
|
||
## 配置选项
|
||
|
||
### 环境变量
|
||
```bash
|
||
# 设置日志级别
|
||
NODE_ENV=development # 开发环境,显示详细日志
|
||
NODE_ENV=production # 生产环境,显示标准日志
|
||
```
|
||
|
||
### 代码中设置
|
||
```javascript
|
||
import logger from './utils/logger';
|
||
|
||
// 设置日志级别
|
||
logger.setLogLevel('DEBUG'); // 详细日志
|
||
logger.setLogLevel('INFO'); // 标准日志
|
||
logger.setLogLevel('ERROR'); // 仅错误日志
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
### 1. 开发环境
|
||
- 建议使用"详细日志"级别
|
||
- 便于调试和问题排查
|
||
- 可以查看所有系统状态
|
||
|
||
### 2. 生产环境
|
||
- 建议使用"标准日志"或"仅错误日志"级别
|
||
- 减少日志文件大小
|
||
- 提高应用性能
|
||
|
||
### 3. 问题排查
|
||
- 如果遇到问题,可以临时切换到"详细日志"级别
|
||
- 查看完整的系统运行状态
|
||
- 问题解决后可以切换回标准级别
|
||
|
||
## 相关文件
|
||
- `src/main/window.js` - tokenExpireTimer 优化
|
||
- `src/main/utils/WebSocketClient.js` - WebSocket 日志优化
|
||
- `src/main/utils/logger.js` - 日志级别控制系统
|
||
- `src/main/tray.js` - 托盘菜单日志设置 |