add error stack for internal error printing

This commit is contained in:
John Guo
2022-01-28 14:51:49 +08:00
parent 1a000396e2
commit 04eb654133
55 changed files with 175 additions and 240 deletions

View File

@ -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()

View File

@ -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 {

View File

@ -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 ""
}

View File

@ -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

View File

@ -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)
}
}

View File

@ -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)
}
}
}

View File

@ -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)
}
})
}

View File

@ -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

View File

@ -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)

View File

@ -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)
}
}
}()

View File

@ -58,6 +58,6 @@ func (s *Server) openapiSpec(r *Request) {
}
if err != nil {
intlog.Error(r.Context(), err)
intlog.Errorf(r.Context(), `%+v`, err)
}
}

View File

@ -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
}

View File

@ -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)
}
}

View File

@ -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)

View File

@ -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 (

View File

@ -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)
}

View File

@ -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)
}