Initial clean project import

This commit is contained in:
cat-shark
2026-06-19 18:41:41 +08:00
commit a13b804c7a
1306 changed files with 220568 additions and 0 deletions
+173
View File
@@ -0,0 +1,173 @@
# 日志管理说明
## 问题说明
当前代码中存在大量的 `console.log` 语句(VideoIPAgent.vue 中有 865 个),这会导致:
- 控制台日志过多,影响性能
- 生产环境中暴露过多调试信息
- 浏览器开发者工具可能卡死
## 解决方案
已创建日志管理工具 `src/utils/logger.ts`,提供以下功能:
### 1. 自动环境检测
- **开发环境**:默认显示所有日志
- **生产环境**:默认只显示错误日志
### 2. 日志级别控制
```typescript
enum LogLevel {
DEBUG = 0, // 调试信息
INFO = 1, // 一般信息
WARN = 2, // 警告
ERROR = 3, // 错误
NONE = 4 // 不显示任何日志
}
```
### 3. 使用方法
#### 在代码中使用
```typescript
// 导入日志工具
import { logger, log, debug, info, warn, error } from '@/utils/logger';
// 替换 console.log
log('用户点击了按钮');
// 替换 console.debug
debug('详细调试信息', { data: someData });
// 替换 console.info
info('任务开始执行');
// 替换 console.warn
warn('配置项缺失,使用默认值');
// 替换 console.error
error('请求失败', error);
// 分组日志
group('任务执行详情');
log('步骤1: 初始化');
log('步骤2: 处理数据');
groupEnd();
```
#### 在控制台中动态控制
打开浏览器控制台,输入以下命令:
```javascript
// 关闭所有日志
__disableLog()
// 开启所有日志
__enableLog()
// 设置日志级别(只显示错误)
__setLogLevel(3)
// 设置日志级别(显示所有)
__setLogLevel(0)
// 查看当前设置
__logger.getLevel()
__logger.isEnabled()
```
### 4. 迁移计划
为避免一次性修改过多代码导致问题,建议分步骤迁移:
#### 第一步:关键文件优先(已完成创建工具)
- ✅ 创建日志工具 `logger.ts`
#### 第二步:高频文件迁移(建议优先处理)
- [ ] VideoIPAgent.vue (865个console)
- [ ] SubtitleStyleSelector.vue (107个console)
#### 第三步:其他文件逐步迁移
- [ ] 其他Vue组件
- [ ] Service层
- [ ] Store层
### 5. 性能优化建议
#### 立即可用的优化
即使不修改代码,也可以在生产环境的启动脚本中添加:
```javascript
// 在 main.ts 或 App.vue 的最前面添加
if (import.meta.env.MODE === 'production') {
// 生产环境禁用所有console
console.log = () => {};
console.debug = () => {};
console.info = () => {};
// 保留 warn 和 error
}
```
#### 使用日志工具后的优化
```typescript
// 在 main.ts 中配置
import { logger, LogLevel } from '@/utils/logger';
// 生产环境只显示错误
if (import.meta.env.MODE === 'production') {
logger.setLevel(LogLevel.ERROR);
}
```
### 6. 日志缓存功能
日志工具内置了缓存功能,最多保留1000条最近的日志:
```javascript
// 查看缓存的日志
__logger.getCache()
// 清空日志缓存
__logger.clearCache()
```
## 使用示例
### 替换前
```typescript
console.log('[VideoGen.onTaskSubmitted] 📥 任务已提交');
console.log('[VideoGen.onTaskSubmitted] 📥 开始刷新任务列表...');
console.log('[VideoGen.onTaskSubmitted] ✓ 任务列表刷新完成');
```
### 替换后
```typescript
import { log } from '@/utils/logger';
log('[VideoGen.onTaskSubmitted] 📥 任务已提交');
log('[VideoGen.onTaskSubmitted] 📥 开始刷新任务列表...');
log('[VideoGen.onTaskSubmitted] ✓ 任务列表刷新完成');
```
## 注意事项
1. **保持原有功能**:日志工具的API与console保持一致,迁移后不影响现有功能
2. **逐步迁移**:不要一次性替换所有console,建议按文件逐步迁移
3. **性能优先**:优先迁移日志最多的文件(如VideoIPAgent.vue
4. **保留错误日志**:即使在生产环境,也应保留error级别的日志用于问题排查
## 快速禁用日志(临时方案)
如果当前日志已经影响性能,可以临时在浏览器控制台执行:
```javascript
// 方案1:使用日志工具(推荐)
__disableLog()
// 方案2:直接禁用console(适用于紧急情况)
console.log = () => {};
console.debug = () => {};
console.info = () => {};
```
重新刷新页面后,日志工具的设置会自动保存并生效。