# 日志系统文档

## 概述

本项目实现了统一的后端日志系统，为所有接口提供了详细的日志记录功能，包括请求、响应、错误等状态。

## 日志系统结构

### 1. logger.js
- 统一日志管理模块
- 支持多种日志级别：ERROR, WARN, INFO, DEBUG
- 支持控制台和文件双重输出
- 包含HTTP请求专用日志方法

### 2. 日志文件位置
- 存储在 `server/logs/` 目录
- 按日期命名：`server-YYYY-MM-DD.log`
- JSON格式便于查询和分析

## 日志级别

- `ERROR`: 错误和异常情况
- `WARN`: 警告和潜在问题
- `INFO`: 重要操作和状态信息
- `DEBUG`: 详细调试信息

## 接口日志详情

### 1. 对话接口 (`/api/chat-ui/chat`)
- 记录请求代理开始和结束
- 记录目标API响应状态
- 记录代理错误

### 2. 模型列表接口 (`/api/chat-ui/models`)
- 记录请求基本信息
- 记录返回的模型数量

### 3. 对话管理接口 (`/api/chat-ui/conversations/*`)
- 记录操作类型（获取/创建/删除）
- 记录对话ID
- 记录操作结果

### 4. 文件上传接口 (`/api/chat-ui/upload`)
- 记录上传文件信息（名称、大小、类型）
- 记录上传结果和生成的URL

### 5. 停止生成接口 (`/api/chat-ui/stop/*`)
- 记录停止请求的ID
- 记录操作结果

### 6. HTTP通用日志
- 记录所有请求的方法、URL、状态码
- 记录请求耗时
- 记录客户端IP和User-Agent
- 根据状态码自动分类日志级别

## 使用方法

### 环境变量
```bash
LOG_LEVEL=DEBUG  # 设置日志级别，默认为INFO
```

### 在代码中使用
```javascript
const { logger } = require('./logger');

logger.info('Some info message', { additional: 'data' });
logger.error('Error occurred', { error: error.message });
logger.debug('Debug info', { variable: value });
```

## 日志示例

### HTTP请求日志
```json
{
  "timestamp": "2026-03-03T03:26:58.631Z",
  "level": "INFO",
  "message": "HTTP GET /api/chat-ui/models 200 15ms",
  "method": "GET",
  "url": "/api/chat-ui/models",
  "statusCode": 200,
  "duration": "15ms",
  "userAgent": "Mozilla/5.0...",
  "ip": "::1"
}
```

### 特定接口日志
```json
{
  "timestamp": "2026-03-03T03:27:12.123Z",
  "level": "INFO",
  "message": "Successfully uploaded file",
  "filename": "1642342342-file.jpg",
  "originalName": "file.jpg",
  "url": "http://localhost:3000/uploads/1642342342-file.jpg",
  "size": 123456
}
```