# 日志管理说明

## 问题说明

当前代码中存在大量的 `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 = () => {};
```

重新刷新页面后，日志工具的设置会自动保存并生效。
