- 提供 gin 框架项目模版
- 集成 GORM 进行 ORM 映射和数据库操作
- 支持 PostgreSQL (使用 pgx 驱动)
- 集成 Viper 进行配置管理
- 提供常用 gin 中间件和工具
- 跨域中间件:处理 API 跨域请求,实现 CORS 支持
- jwt 解析中间件:从请求中解析并验证 JWT Token,用于 API 身份认证
go install github.com/go-eagle/eagle/cmd/eagle@latest
eagle new <project name> -r https://github.com/limitcool/starter -b main
通过环境变量 APP_ENV
来指定运行环境:
APP_ENV=dev
或APP_ENV=development
- 开发环境(默认)APP_ENV=test
或APP_ENV=testing
- 测试环境APP_ENV=prod
或APP_ENV=production
- 生产环境
示例:
# 开发环境运行
APP_ENV=dev go run main.go
# 生产环境运行
APP_ENV=prod ./starter
配置文件位于 configs
目录:
config.yaml
- 默认配置config-dev.yaml
- 开发环境配置config-test.yaml
- 测试环境配置config-prod.yaml
- 生产环境配置config.example.yaml
- 示例配置(用于版本控制)
首次使用时,请复制 config.example.yaml
并根据环境重命名:
# 开发环境
cp configs/config.example.yaml configs/config-dev.yaml
# 生产环境
cp configs/config.example.yaml configs/config-prod.yaml
配置文件加载顺序:
- 加载
config.yaml
作为默认配置 - 根据
APP_ENV
加载对应的环境配置文件,覆盖默认配置
项目使用 charmbracelet/log 作为日志库,支持控制台彩色输出和文件输出。
Log:
Level: info # 日志级别: debug, info, warn, error
Output: [console, file] # 输出方式: console, file
FileConfig:
Path: ./logs/app.log # 日志文件路径
MaxSize: 100 # 每个日志文件的最大大小(MB)
MaxAge: 7 # 日志文件保留天数
MaxBackups: 10 # 保留的旧日志文件最大数量
Compress: true # 是否压缩旧日志文件
debug
: 调试信息,包含详细的开发调试信息info
: 一般信息,默认级别warn
: 警告信息,需要注意的信息error
: 错误信息,影响程序正常运行的错误
Console
: 输出到控制台,支持彩色输出File
: 输出到文件,支持按大小自动分割、自动清理和压缩
可以同时配置多个输出方式,日志会同时输出到所有配置的目标。如果不配置 output,默认只输出到控制台。
Path
: 日志文件路径MaxSize
: 单个日志文件的最大大小(MB),超过后会自动分割MaxAge
: 日志文件保留天数,超过后会自动删除MaxBackups
: 保留的旧日志文件数量Compress
: 是否压缩旧的日志文件