File size: 5,751 Bytes
1766992 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 | # 启动日志优化说明
## 优化前 vs 优化后
### 优化前(调试模式)
启动时会显示大量 GIN 框架的调试信息:
```
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
- using env: export GIN_MODE=release
- using code: gin.SetMode(gin.ReleaseMode)
[GIN-debug] GET /health --> main.setupRoutes.func1 (5 handlers)
[GIN-debug] GET / --> cursor2api-go/handlers.(*Handler).ServeDocs-fm (5 handlers)
[GIN-debug] GET /v1/models --> cursor2api-go/handlers.(*Handler).ListModels-fm (6 handlers)
[GIN-debug] POST /v1/chat/completions --> cursor2api-go/handlers.(*Handler).ChatCompletions-fm (6 handlers)
[GIN-debug] GET /static/*filepath --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (5 handlers)
[GIN-debug] HEAD /static/*filepath --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (5 handlers)
INFO[0000] Starting Cursor2API server on port 8002
```
### 优化后(简洁模式,默认)
启动时只显示必要的服务信息:
```
╔══════════════════════════════════════════════════════════════╗
║ Cursor2API Server ║
╚══════════════════════════════════════════════════════════════╝
🚀 服务地址: http://localhost:8002
📚 API 文档: http://localhost:8002/
💊 健康检查: http://localhost:8002/health
🔑 API 密钥: 0000
🤖 支持模型: 仅 `claude-sonnet-4.6` 与 `claude-sonnet-4.6-thinking`(thinking 为派生公开模型)
✨ 服务已启动,按 Ctrl+C 停止
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
## 主要改进
### 1. 默认使用简洁模式
- 修改 `.env.example` 中 `DEBUG=false`
- 生产环境默认不显示调试信息
- 启动输出更清爽、专业
### 2. 美观的启动横幅
- 使用 Unicode 框线字符绘制横幅
- 使用 Emoji 图标增强可读性
- 清晰展示关键信息:
- 🚀 服务地址
- 📚 API 文档
- 💊 健康检查
- 🔑 API 密钥
- 🤖 支持的模型
### 3. 条件性日志输出
- 只在 `DEBUG=true` 时显示详细日志
- GIN 的 Logger 中间件仅在调试模式启用
- 减少生产环境的日志噪音
### 4. 智能模型显示
- 模型数量 > 3 时,只显示第一个和总数
- 避免启动信息过长
- 保持输出简洁
## 代码改进
### main.go
```go
// 设置日志级别和 GIN 模式
if cfg.Debug {
logrus.SetLevel(logrus.DebugLevel)
gin.SetMode(gin.DebugMode)
} else {
logrus.SetLevel(logrus.InfoLevel)
gin.SetMode(gin.ReleaseMode)
}
// 只在 Debug 模式下启用 GIN 的日志
if cfg.Debug {
router.Use(gin.Logger())
}
// 打印启动信息
printStartupBanner(cfg)
```
### printStartupBanner 函数
```go
func printStartupBanner(cfg *config.Config) {
banner := `
╔══════════════════════════════════════════════════════════════╗
║ Cursor2API Server ║
╚══════════════════════════════════════════════════════════════╝
`
fmt.Println(banner)
fmt.Printf("🚀 服务地址: http://localhost:%d\n", cfg.Port)
fmt.Printf("📚 API 文档: http://localhost:%d/\n", cfg.Port)
fmt.Printf("💊 健康检查: http://localhost:%d/health\n", cfg.Port)
fmt.Printf("🔑 API 密钥: %s\n", cfg.APIKey)
models := cfg.GetModels()
if len(models) > 3 {
fmt.Printf("🤖 支持模型: %s 等 %d 个模型\n", models[0], len(models))
} else {
fmt.Printf("🤖 支持模型: %v\n", models)
}
if cfg.Debug {
fmt.Println("🐛 调试模式: 已启用")
}
fmt.Println("\n✨ 服务已启动,按 Ctrl+C 停止")
fmt.Println("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
}
```
## 使用方法
### 简洁模式(默认)
```bash
./cursor2api-go
```
或者使用启动脚本:
```bash
./start.sh
```
### 调试模式
**方式 1**: 修改 `.env` 文件
```bash
DEBUG=true
```
**方式 2**: 临时启用
```bash
DEBUG=true ./cursor2api-go
```
### 调试模式会显示
- ✅ 详细的 GIN 路由信息
- ✅ 每个请求的详细日志
- ✅ x-is-human token 信息
- ✅ 浏览器指纹配置
- ✅ 重试和错误处理详情
## 优势
1. **更专业** - 简洁的输出适合生产环境
2. **更清晰** - 关键信息一目了然
3. **更美观** - 使用 Unicode 和 Emoji 增强视觉效果
4. **更灵活** - 可以随时切换调试模式
5. **更友好** - 新用户更容易理解服务状态
## 兼容性
- ✅ 完全向后兼容
- ✅ 不影响现有功能
- ✅ 可以随时切换模式
- ✅ 支持所有平台(Windows/macOS/Linux)
## 注意事项
1. **首次使用**: 需要更新 `.env` 文件(或删除后重新生成)
2. **调试问题**: 遇到问题时,建议启用 `DEBUG=true` 查看详细日志
3. **生产部署**: 建议使用 `DEBUG=false` 以获得最佳性能和简洁输出
|