启动日志优化说明
优化前 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
// 设置日志级别和 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 信息
- ✅ 浏览器指纹配置
- ✅ 重试和错误处理详情
优势
- 更专业 - 简洁的输出适合生产环境
- 更清晰 - 关键信息一目了然
- 更美观 - 使用 Unicode 和 Emoji 增强视觉效果
- 更灵活 - 可以随时切换调试模式
- 更友好 - 新用户更容易理解服务状态
兼容性
- ✅ 完全向后兼容
- ✅ 不影响现有功能
- ✅ 可以随时切换模式
- ✅ 支持所有平台(Windows/macOS/Linux)
注意事项
- 首次使用: 需要更新
.env文件(或删除后重新生成) - 调试问题: 遇到问题时,建议启用
DEBUG=true查看详细日志 - 生产部署: 建议使用
DEBUG=false以获得最佳性能和简洁输出