golang 根据启动命令切换不同数据库以及在中间件中捕获异常记录日志

dataBase := flag.Bool("MySql",false,"true :线上,false: 线下 默认:false")
	flag.Parse()
	//*dataBase=true
	db.InitDB(*dataBase) //初始化数据库

根据 dataBase 参数来判断取线上或者线下

启动命令为 :go run main.go  -MySql=true 

 

对异常错误进行包装使用了 github.com/pkg/errors 包

在使用此路由下的函数出现错误panic掉的时候会触发中间件的捕获异常函数,在中间件中

defer webgo.TryCatch()

 

日志使用的是log4go来记录

func TryCatch()  {
	if e := recover(); e != nil {
		if e := recover(); e != nil {
			var err error
			switch x := e.(type) {
			case error:
				err = x
			case string:
				err = errors.New(x)
			default:
				err = errors.New("UnKnow panic")
			}
			error := errors.Wrap(err, "")
			Error("%+v\n", error)
		}
	}
}

 

你可能感兴趣的:(golang)