codecamp

GoFrame 核心组件-调试命令

基本介绍

goframe​框架的各个组件在一些关键的功能节点会打印出一些调试信息,原本仅供框架内部开发者在开发阶段使用。由于功能强大,从​goframe​框架​v1.10.0​版本开始,全面开放给所有的框架使用者。

框架调试模式下打印的调试信息将会以​[INTE]​级别的日志前缀输出到终端标准输出,并且会打印出所在源文件的名称以及代码行号,例如:

2021-04-14 15:24:52.954 [INTE] gdb_driver_mysql.go:49 Open: root:12345678@tcp(127.0.0.1:3306)/test
2021-04-14 15:24:52.954 [INTE] gdb.go:492 open new connection success, master:false, config:&gdb.ConfigNode{Host:"", Port:"", User:"", Pass:"", Name:"", Type:"mysql", Role:"", Debug:false, Prefix:"", DryRun:false, Weight:0, Charset:"", LinkInfo:"root:12345678@tcp(127.0.0.1:3306)/test", MaxIdleConnCount:0, MaxOpenConnCount:0, MaxConnLifeTime:0, QueryTimeout:0, ExecTimeout:0, TranTimeout:0, PrepareTimeout:0, CreatedAt:"", UpdatedAt:"", DeletedAt:"", TimeMaintainDisabled:false}, node:&gdb.ConfigNode{Host:"", Port:"", User:"", Pass:"", Name:"", Type:"mysql", Role:"", Debug:false, Prefix:"", DryRun:false, Weight:0, Charset:"utf8", LinkInfo:"root:12345678@tcp(127.0.0.1:3306)/test", MaxIdleConnCount:0, MaxOpenConnCount:0, MaxConnLifeTime:0, QueryTimeout:0, ExecTimeout:0, TranTimeout:0, PrepareTimeout:0, CreatedAt:"", UpdatedAt:"", DeletedAt:"", TimeMaintainDisabled:false}

特性开启

这些调试信息默认情况下是关闭的,不会影响框架性能,框架的开发者和使用者可以通过以下方式打开:

  1. 命令行启动参数 - ​gf.debug=true​。
  2. 指定的环境变量 - ​GF_DEBUG=true​。
  3. 在​GoFrame v1.14.0​版本以后,在程序启动​boot​包中使用​g.SetDebug​方法手动打开/关闭。该方法是非并发安全的,意味着您不能在运行时异步多协程去调用该方法动态设置调试模式。

您可以发现​goframe​框架的许多功能模块特性也是按照命令行启动参数+环境变量的形式按照一定规则进行配置。

需要注意的是,框架的各个模块关键调试信息仅会输出到终端标准输出,不支持输出到日志文件中。

使用示例

通过环境变量启用调试模式

我们以Goland IDE为例,在运行模板中添加​GF_DEBUG​环境变量即可。

image2021-4-14_15-10-35

image2021-4-14_15-13-5

通过命令行参数启用调试模式

启动程序的时候带上​--gf.debug=true​即可,例如:

$ ./app --gf.debug=true
$ ./app --gf.debug true

或者

$ ./app --gf.debug=1
$ ./app --gf.debug 1

image2021-4-14_15-33-52


GoFrame 核心组件-对象管理
GoFrame 命令管理-基本介绍
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

GoFrame 核心组件

GoFrame 核心组件-数据库ORM

GoFrame 模块列表

GoFrame 模块列表-单元测试

GoFrame 模块列表-功能调试

GoFrame WEB服务开发

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }