mirror of
https://gitee.com/johng/gf
synced 2026-06-07 02:12:11 +08:00
add error stack for internal error printing
This commit is contained in:
@ -62,12 +62,12 @@ func (c *Client) TraceBytes(ctx context.Context, url string, data ...interface{}
|
||||
func (c *Client) RequestBytes(ctx context.Context, method string, url string, data ...interface{}) []byte {
|
||||
response, err := c.DoRequest(ctx, method, url, data...)
|
||||
if err != nil {
|
||||
intlog.Error(ctx, err)
|
||||
intlog.Errorf(ctx, `%+v`, err)
|
||||
return nil
|
||||
}
|
||||
defer func() {
|
||||
if err = response.Close(); err != nil {
|
||||
intlog.Error(ctx, err)
|
||||
intlog.Errorf(ctx, `%+v`, err)
|
||||
}
|
||||
}()
|
||||
return response.ReadAll()
|
||||
|
||||
@ -132,7 +132,7 @@ func (c *Client) SetProxy(proxyURL string) {
|
||||
}
|
||||
_proxy, err := url.Parse(proxyURL)
|
||||
if err != nil {
|
||||
intlog.Error(context.TODO(), err)
|
||||
intlog.Errorf(context.TODO(), `%+v`, err)
|
||||
return
|
||||
}
|
||||
if _proxy.Scheme == httpProtocolName {
|
||||
@ -162,7 +162,7 @@ func (c *Client) SetProxy(proxyURL string) {
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
intlog.Error(context.TODO(), err)
|
||||
intlog.Errorf(context.TODO(), `%+v`, err)
|
||||
return
|
||||
}
|
||||
if v, ok := c.Transport.(*http.Transport); ok {
|
||||
|
||||
@ -46,7 +46,7 @@ func (r *Response) RawRequest() string {
|
||||
// DumpRequestOut writes more request headers than DumpRequest, such as User-Agent.
|
||||
bs, err := httputil.DumpRequestOut(r.request, false)
|
||||
if err != nil {
|
||||
intlog.Error(r.request.Context(), err)
|
||||
intlog.Errorf(r.request.Context(), `%+v`, err)
|
||||
return ""
|
||||
}
|
||||
return fmt.Sprintf(
|
||||
@ -65,7 +65,7 @@ func (r *Response) RawResponse() string {
|
||||
}
|
||||
bs, err := httputil.DumpResponse(r.Response, false)
|
||||
if err != nil {
|
||||
intlog.Error(r.request.Context(), err)
|
||||
intlog.Errorf(r.request.Context(), `%+v`, err)
|
||||
return ""
|
||||
}
|
||||
|
||||
|
||||
@ -58,7 +58,7 @@ func (r *Response) ReadAll() []byte {
|
||||
}
|
||||
body, err := ioutil.ReadAll(r.Response.Body)
|
||||
if err != nil {
|
||||
intlog.Error(r.request.Context(), err)
|
||||
intlog.Errorf(r.request.Context(), `%+v`, err)
|
||||
return nil
|
||||
}
|
||||
return body
|
||||
|
||||
@ -45,7 +45,7 @@ func MiddlewareHandlerResponse(r *Request) {
|
||||
Data: nil,
|
||||
})
|
||||
if internalErr != nil {
|
||||
intlog.Error(ctx, internalErr)
|
||||
intlog.Errorf(ctx, `%+v`, internalErr)
|
||||
}
|
||||
return
|
||||
}
|
||||
@ -55,6 +55,6 @@ func MiddlewareHandlerResponse(r *Request) {
|
||||
Data: res,
|
||||
})
|
||||
if internalErr != nil {
|
||||
intlog.Error(ctx, internalErr)
|
||||
intlog.Errorf(ctx, `%+v`, internalErr)
|
||||
}
|
||||
}
|
||||
|
||||
@ -56,10 +56,10 @@ func serverProcessInit() {
|
||||
if !genv.Get(adminActionRestartEnvKey).IsEmpty() {
|
||||
if p, err := os.FindProcess(gproc.PPid()); err == nil {
|
||||
if err = p.Kill(); err != nil {
|
||||
intlog.Error(ctx, err)
|
||||
intlog.Errorf(ctx, `%+v`, err)
|
||||
}
|
||||
if _, err = p.Wait(); err != nil {
|
||||
intlog.Error(ctx, err)
|
||||
intlog.Errorf(ctx, `%+v`, err)
|
||||
}
|
||||
} else {
|
||||
glog.Error(ctx, err)
|
||||
@ -240,7 +240,7 @@ func (s *Server) Start() error {
|
||||
if gproc.IsChild() {
|
||||
gtimer.SetTimeout(ctx, time.Duration(s.config.GracefulTimeout)*time.Second, func(ctx context.Context) {
|
||||
if err := gproc.Send(gproc.PPid(), []byte("exit"), adminGProcCommGroup); err != nil {
|
||||
intlog.Error(ctx, "server error in process communication:", err)
|
||||
intlog.Errorf(ctx, `server error in process communication: %+v`, err)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -447,7 +447,7 @@ func Wait() {
|
||||
for _, p := range s.plugins {
|
||||
intlog.Printf(ctx, `remove plugin: %s`, p.Name())
|
||||
if err := p.Remove(); err != nil {
|
||||
intlog.Error(ctx, err)
|
||||
intlog.Errorf(ctx, `%+v`, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -164,7 +164,7 @@ func forkRestartProcess(ctx context.Context, newExeFilePath ...string) error {
|
||||
path = newExeFilePath[0]
|
||||
}
|
||||
if err := os.Unsetenv(adminActionReloadEnvKey); err != nil {
|
||||
intlog.Error(ctx, err)
|
||||
intlog.Errorf(ctx, `%+v`, err)
|
||||
}
|
||||
env := os.Environ()
|
||||
env = append(env, adminActionRestartEnvKey+"=1")
|
||||
@ -215,7 +215,7 @@ func restartWebServers(ctx context.Context, signal string, newExeFilePath ...str
|
||||
// Controlled by signal.
|
||||
forceCloseWebServers(ctx)
|
||||
if err := forkRestartProcess(ctx, newExeFilePath...); err != nil {
|
||||
intlog.Error(ctx, err)
|
||||
intlog.Errorf(ctx, `%+v`, err)
|
||||
}
|
||||
} else {
|
||||
// Controlled by web page.
|
||||
@ -223,7 +223,7 @@ func restartWebServers(ctx context.Context, signal string, newExeFilePath ...str
|
||||
gtimer.SetTimeout(ctx, time.Second, func(ctx context.Context) {
|
||||
forceCloseWebServers(ctx)
|
||||
if err := forkRestartProcess(ctx, newExeFilePath...); err != nil {
|
||||
intlog.Error(ctx, err)
|
||||
intlog.Errorf(ctx, `%+v`, err)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@ -55,7 +55,7 @@ func handleProcessSignal() {
|
||||
// Restart the servers.
|
||||
case syscall.SIGUSR1:
|
||||
if err := restartWebServers(ctx, sig.String()); err != nil {
|
||||
intlog.Error(ctx, err)
|
||||
intlog.Errorf(ctx, `%+v`, err)
|
||||
}
|
||||
return
|
||||
|
||||
|
||||
@ -346,7 +346,7 @@ func (s *Server) SetConfig(c ServerConfig) error {
|
||||
}
|
||||
}
|
||||
if err := s.config.Logger.SetLevelStr(s.config.LogLevel); err != nil {
|
||||
intlog.Error(context.TODO(), err)
|
||||
intlog.Errorf(context.TODO(), `%+v`, err)
|
||||
}
|
||||
gracefulEnabled = c.Graceful
|
||||
intlog.Printf(context.TODO(), "SetConfig: %+v", s.config)
|
||||
|
||||
@ -68,19 +68,19 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
// Close the session, which automatically update the TTL
|
||||
// of the session if it exists.
|
||||
if err := request.Session.Close(); err != nil {
|
||||
intlog.Error(request.Context(), err)
|
||||
intlog.Errorf(request.Context(), `%+v`, err)
|
||||
}
|
||||
|
||||
// Close the request and response body
|
||||
// to release the file descriptor in time.
|
||||
err := request.Request.Body.Close()
|
||||
if err != nil {
|
||||
intlog.Error(request.Context(), err)
|
||||
intlog.Errorf(request.Context(), `%+v`, err)
|
||||
}
|
||||
if request.Request.Response != nil {
|
||||
err = request.Request.Response.Body.Close()
|
||||
if err != nil {
|
||||
intlog.Error(request.Context(), err)
|
||||
intlog.Errorf(request.Context(), `%+v`, err)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
@ -58,6 +58,6 @@ func (s *Server) openapiSpec(r *Request) {
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
intlog.Error(r.Context(), err)
|
||||
intlog.Errorf(r.Context(), `%+v`, err)
|
||||
}
|
||||
}
|
||||
|
||||
@ -92,7 +92,7 @@ func (p *utilPProf) Index(r *Request) {
|
||||
for _, p := range profiles {
|
||||
if p.Name() == action {
|
||||
if err := p.WriteTo(r.Response.Writer, r.GetRequest("debug").Int()); err != nil {
|
||||
intlog.Error(ctx, err)
|
||||
intlog.Errorf(ctx, `%+v`, err)
|
||||
}
|
||||
break
|
||||
}
|
||||
|
||||
@ -10,6 +10,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/gogf/gf/v2/internal/intlog"
|
||||
"github.com/gogf/gf/v2/net/gipv4"
|
||||
"github.com/gogf/gf/v2/net/gsvc"
|
||||
"github.com/gogf/gf/v2/text/gstr"
|
||||
@ -47,10 +48,17 @@ func (s *Server) doServiceRegister() {
|
||||
Endpoints: []string{fmt.Sprintf(`%s:%s`, ip, port)},
|
||||
Metadata: metadata,
|
||||
}
|
||||
_ = gsvc.Register(ctx, s.service)
|
||||
s.Logger().Debugf(ctx, `service register: %+v`, s.service)
|
||||
if err := gsvc.Register(ctx, s.service); err != nil {
|
||||
intlog.Errorf(ctx, `%+v`, err)
|
||||
}
|
||||
}
|
||||
|
||||
// doServiceDeregister de-registers current service from Registry.
|
||||
func (s *Server) doServiceDeregister() {
|
||||
_ = gsvc.Deregister(context.Background(), s.service)
|
||||
var ctx = context.Background()
|
||||
s.Logger().Debugf(ctx, `service deregister: %+v`, s.service)
|
||||
if err := gsvc.Deregister(ctx, s.service); err != nil {
|
||||
intlog.Errorf(ctx, `%+v`, err)
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,7 +62,7 @@ func (s *Server) getHandlersWithCache(r *Request) (parsedItems []*handlerParsedI
|
||||
}, routeCacheDuration,
|
||||
)
|
||||
if err != nil {
|
||||
intlog.Error(ctx, err)
|
||||
intlog.Errorf(ctx, `%+v`, err)
|
||||
}
|
||||
if value != nil {
|
||||
item := value.Val().(*handlerCacheItem)
|
||||
|
||||
@ -9,6 +9,7 @@ package gsvc
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
)
|
||||
@ -79,19 +80,20 @@ type WatchInput struct {
|
||||
}
|
||||
|
||||
const (
|
||||
Schema = `goframe`
|
||||
DefaultPrefix = `goframe`
|
||||
DefaultDeployment = `default`
|
||||
DefaultNamespace = `default`
|
||||
DefaultVersion = `latest`
|
||||
EnvPrefix = `GF_GSVC_PREFIX`
|
||||
EnvDeployment = `GF_GSVC_DEPLOYMENT`
|
||||
EnvNamespace = `GF_GSVC_NAMESPACE`
|
||||
EnvName = `GF_GSVC_Name`
|
||||
EnvVersion = `GF_GSVC_VERSION`
|
||||
MDProtocol = `protocol`
|
||||
MDInsecure = `insecure`
|
||||
MDWeight = `weight`
|
||||
Schema = `goframe`
|
||||
DefaultPrefix = `goframe`
|
||||
DefaultDeployment = `default`
|
||||
DefaultNamespace = `default`
|
||||
DefaultVersion = `latest`
|
||||
EnvPrefix = `GF_GSVC_PREFIX`
|
||||
EnvDeployment = `GF_GSVC_DEPLOYMENT`
|
||||
EnvNamespace = `GF_GSVC_NAMESPACE`
|
||||
EnvName = `GF_GSVC_Name`
|
||||
EnvVersion = `GF_GSVC_VERSION`
|
||||
MDProtocol = `protocol`
|
||||
MDInsecure = `insecure`
|
||||
MDWeight = `weight`
|
||||
defaultSearchTimeout = 5 * time.Second
|
||||
)
|
||||
|
||||
var (
|
||||
|
||||
@ -13,7 +13,7 @@ import (
|
||||
"github.com/gogf/gf/v2/container/gmap"
|
||||
"github.com/gogf/gf/v2/errors/gcode"
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
"github.com/gogf/gf/v2/os/glog"
|
||||
"github.com/gogf/gf/v2/internal/intlog"
|
||||
"github.com/gogf/gf/v2/util/gutil"
|
||||
)
|
||||
|
||||
@ -73,7 +73,7 @@ func watchAndUpdateService(watcher Watcher, service *Service, watchFunc ServiceW
|
||||
time.Sleep(time.Second)
|
||||
services, err = watcher.Proceed()
|
||||
if err != nil {
|
||||
glog.Error(ctx, err)
|
||||
intlog.Errorf(ctx, `%+v`, err)
|
||||
continue
|
||||
}
|
||||
if len(services) > 0 {
|
||||
@ -82,7 +82,7 @@ func watchAndUpdateService(watcher Watcher, service *Service, watchFunc ServiceW
|
||||
gutil.TryCatch(func() {
|
||||
watchFunc(services[0])
|
||||
}, func(exception error) {
|
||||
glog.Error(ctx, exception)
|
||||
intlog.Errorf(ctx, `%+v`, exception)
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -94,6 +94,7 @@ func Search(ctx context.Context, in SearchInput) ([]*Service, error) {
|
||||
if defaultRegistry == nil {
|
||||
return nil, gerror.NewCodef(gcode.CodeNotImplemented, `no Registry is registered`)
|
||||
}
|
||||
ctx, _ = context.WithTimeout(ctx, defaultSearchTimeout)
|
||||
return defaultRegistry.Search(ctx, in)
|
||||
}
|
||||
|
||||
|
||||
@ -83,7 +83,7 @@ func (s *Service) KeyWithoutEndpoints() string {
|
||||
func (s *Service) Value() string {
|
||||
b, err := gjson.Marshal(s.Metadata)
|
||||
if err != nil {
|
||||
intlog.Error(context.TODO(), err)
|
||||
intlog.Errorf(context.TODO(), `%+v`, err)
|
||||
}
|
||||
return string(b)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user