cursor / docs /STARTUP_OPTIMIZATION.md
cacode's picture
Upload 48 files
1766992 verified

启动日志优化说明

优化前 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.exampleDEBUG=false
  • 生产环境默认不显示调试信息
  • 启动输出更清爽、专业

2. 美观的启动横幅

  • 使用 Unicode 框线字符绘制横幅
  • 使用 Emoji 图标增强可读性
  • 清晰展示关键信息:
    • 🚀 服务地址
    • 📚 API 文档
    • 💊 健康检查
    • 🔑 API 密钥
    • 🤖 支持的模型

3. 条件性日志输出

  • 只在 DEBUG=true 时显示详细日志
  • GIN 的 Logger 中间件仅在调试模式启用
  • 减少生产环境的日志噪音

4. 智能模型显示

  • 模型数量 > 3 时,只显示第一个和总数
  • 避免启动信息过长
  • 保持输出简洁

代码改进

main.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 函数

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("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
}

使用方法

简洁模式(默认)

./cursor2api-go

或者使用启动脚本:

./start.sh

调试模式

方式 1: 修改 .env 文件

DEBUG=true

方式 2: 临时启用

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 以获得最佳性能和简洁输出