diff --git a/sysmodule/DBModule.go b/sysmodule/DBModule.go index 411b582..2e9f04a 100644 --- a/sysmodule/DBModule.go +++ b/sysmodule/DBModule.go @@ -29,7 +29,7 @@ type DBModule struct { password string dbname string maxconn int - + PrintTime time.Duration syncExecuteFun chan SyncFun syncCoroutineNum int } @@ -241,6 +241,19 @@ func (slf *DBResult) mapSingle2interface(m map[string]string, v reflect.Value) e return nil } + +func (slf *DBModule) SetQuerySlowTime(Time time.Duration){ + slf.PrintTime = Time +} + + +func (slf *DBModule) IsPrintTimeLog(Time time.Duration)bool{ + if slf.PrintTime != 0 && Time >= slf.PrintTime{ + return true + } + return false +} + func (slf *DBResult) mapSlice2interface(data []map[string]string, in interface{}) error { length := len(data) @@ -354,7 +367,14 @@ func (slf *DBModule) QueryEx(query string, args ...interface{}) (*DataSetList, e service.GetLogger().Printf(service.LEVER_ERROR, "cannot connect database:%s", query) return &datasetList, fmt.Errorf("cannot connect database!") } + + TimeFuncStart := time.Now() rows, err := slf.db.Query(query, args...) + TimeFuncPass := time.Since(TimeFuncStart) + + if slf.IsPrintTimeLog(TimeFuncPass) { + service.GetLogger().Printf(service.LEVER_INFO, "DBModule QueryEx Time %s , Query :%s , args :%+v",TimeFuncPass,query,args) + } if err != nil { service.GetLogger().Printf(service.LEVER_ERROR, "Query:%s(%v)", query, err) if rows != nil { @@ -434,7 +454,12 @@ func (slf *DBModule) Exec(query string, args ...interface{}) (*DBResultEx, error return ret, fmt.Errorf("cannot connect database!") } + TimeFuncStart := time.Now() res, err := slf.db.Exec(query, args...) + TimeFuncPass := time.Since(TimeFuncStart) + if slf.IsPrintTimeLog(TimeFuncPass) { + service.GetLogger().Printf(service.LEVER_INFO, "DBModule QueryEx Time %s , Query :%s , args :%+v",TimeFuncPass,query,args) + } if err != nil { service.GetLogger().Printf(service.LEVER_ERROR, "Exec:%s(%v)", query, err) return nil, err diff --git a/sysservice/httpserverervice.go b/sysservice/httpserverervice.go index 7baf7a8..6288ba6 100644 --- a/sysservice/httpserverervice.go +++ b/sysservice/httpserverervice.go @@ -33,9 +33,9 @@ type ControllerMapsType map[string]reflect.Value type HttpServerService struct { service.BaseService - httpserver network.HttpServer - port uint16 - + httpserver network.HttpServer + port uint16 + PrintRequestTime bool controllerMaps ControllerMapsType certfile string keyfile string @@ -48,7 +48,6 @@ func (slf *HttpServerService) OnInit() error { if slf.ishttps == true { slf.httpserver.SetHttps(slf.certfile, slf.keyfile) } - return nil } @@ -89,7 +88,6 @@ func (slf *HttpServerService) OnDestory() error { } func (slf *HttpServerService) OnSetupService(iservice service.IService) { - // rpc.RegisterName(iservice.GetServiceName(), "HTTP_", iservice) } @@ -97,6 +95,19 @@ func (slf *HttpServerService) OnRemoveService(iservice service.IService) { return } + +func (slf *HttpServerService) IsPrintRequestTime() bool { + if slf.PrintRequestTime == true { + return true + } + return false + +} + +func (slf *HttpServerService) SetPrintRequestTime(isPrint bool) { + slf.PrintRequestTime = isPrint +} + func (slf *HttpServerService) httpHandler(w http.ResponseWriter, r *http.Request) { writeError := func(status int, msg string) { w.Header().Set("Content-Type", "text/plain; charset=utf-8") @@ -142,7 +153,14 @@ func (slf *HttpServerService) httpHandler(w http.ResponseWriter, r *http.Request request := HttpRequest{r.Header, string(msg)} var resp HttpRespone + TimeFuncStart := time.Now() err = cluster.InstanceClusterMgr().Call(strCallPath, &request, &resp) + + TimeFuncPass := time.Since(TimeFuncStart) + if slf.IsPrintRequestTime() { + service.GetLogger().Printf(service.LEVER_INFO, "HttpServer Time : %s IP : %S url : %s", TimeFuncPass, strCallPath) + } + w.Header().Set("Content-Type", "application/json;charset=utf-8") if err != nil { resp.Respone = []byte(fmt.Sprint(err))