必须启用orm.debug = true并确保其在registerdatabase之后、neworm之前设置,同时配置日志级别为debug且输出到控制台,才能实时查看beego orm执行的sql语句。

要在Beego框架中实时看到ORM生成并执行的每一条SQL语句,必须启用调试日志开关,否则所有数据库操作都静默执行,无法定位慢查询或语法错误。
确认ORM已正确注册并启用Debug模式
在main.go的init()函数中,确保已调用orm.RegisterDataBase完成数据库注册,且紧随其后设置orm.Debug = true;这一步必须在orm.NewOrm()被首次调用前完成,否则无效。
如果使用配置文件加载数据库参数,需确保orm.RegisterDataBase传入的DSN字符串完整有效,例如"root:pass@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=true&loc=Local";缺少parseTime=true会导致time.Time字段解析失败,进而使Debug日志中断输出。
【orm.Debug = true必须写在RegisterDataBase之后、任何NewOrm之前】
验证日志是否实际输出到控制台
Beego默认不自动将ORM日志输出到console,即使orm.Debug = true已设,仍需确保底层日志系统支持debug级别输出。检查项目是否已调用logs.SetLogger("console"),且未通过logs.SetLevel(logs.LevelInfo)等调用人为屏蔽debug日志。
若项目使用了自定义日志配置(如file adapter),需确认其level字段不低于7(即debug),例如:{"level": 7};level设为6(info)时,SQL日志将被静默丢弃。
这一步操作起来很简单,直接把logs.SetLevel(logs.LevelDebug)加在orm.Debug = true之后即可生效。
区分开发与生产环境的启用方式
方法一:仅开发阶段硬编码开启
在main.go中固定写死orm.Debug = true,配合beego.RunMode == beego.DEV做条件判断,避免误入prod。
方法二:运行时动态开关
通过环境变量控制,例如启动时加BEEDB_DEBUG=1 ./myapp,代码中读取:if os.Getenv("BEEDB_DEBUG") == "1" { orm.Debug = true };这种方式便于临时排查线上问题,无需重新编译。
方法三:结合Beego配置项
在conf/app.conf中添加db_debug = true,init中读取:if beego.AppConfig.DefaultBool("db_debug", false) { orm.Debug = true };比硬编码更灵活,但需注意配置加载顺序早于init执行。











