package common import ( "encoding/json" "fmt" "github.com/sirupsen/logrus" ) type ObserveHook struct{} func (h *ObserveHook) Levels() []logrus.Level { return []logrus.Level{ logrus.ErrorLevel, logrus.PanicLevel, logrus.InfoLevel, } } func (h *ObserveHook) Fire(entry *logrus.Entry) error { go func() { data := []map[string]interface{}{{ "_msg": entry.Message, "_level": entry.Level, "_time": entry.Time, "_app": "sharkapi", "_userid": entry.Data[UserIDKey], "_endpoint": entry.Data[EndpointKey], "_header": entry.Data[HeaderKey], "_x_trace_id": entry.Data[TraceIDKey], }} if e, ok := entry.Data[logrus.ErrorKey].(error); ok { data[0]["_err"] = e.Error() } c, err := json.Marshal(data) if err != nil { return } err = log2openOb(c) if err != nil { fmt.Printf("log2openOb error: %v", err.Error()) } }() return nil } func log2openOb(l []byte) error { return nil // cli := req.C() //.DevMode() // resp, err := cli.R().SetBasicAuth(config.GetSettings().LogUser, // config.GetSettings().LogKey). // SetBody(l). // SetHeader("Content-Type", "application/json"). // Post(config.GetSettings().LogEndpoint) // if err != nil { // return err // } // if resp.Response == nil { // return errors.New("resp err") // } // return nil }