telemetry: added global recovery and crash report
This commit is contained in:
parent
4495c8f8e8
commit
e5c607e482
|
@ -49,7 +49,22 @@ func (c *BackendClient) ReportUsageStatistics(error string, statistics *metadata
|
|||
}
|
||||
|
||||
func (c *BackendClient) ReportCrash(error string, statistics *metadata.Statistics) {
|
||||
// TODO
|
||||
|
||||
req := struct {
|
||||
Error string
|
||||
Statistics *metadata.Statistics
|
||||
}{
|
||||
error,
|
||||
statistics,
|
||||
}
|
||||
|
||||
buf := new(bytes.Buffer)
|
||||
err := json.NewEncoder(buf).Encode(req)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
_, _ = http.Post(backendUrl+crashPath, jsonContentType, buf)
|
||||
}
|
||||
|
||||
func (c *BackendClient) RegisterLicenseKey(licenseKey string, statistics *metadata.Statistics) (*metadata.License, error) {
|
||||
|
|
14
main.go
14
main.go
|
@ -1,6 +1,7 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
ui "github.com/gizak/termui/v3"
|
||||
"github.com/sqshq/sampler/asset"
|
||||
"github.com/sqshq/sampler/client"
|
||||
|
@ -17,6 +18,7 @@ import (
|
|||
"github.com/sqshq/sampler/data"
|
||||
"github.com/sqshq/sampler/event"
|
||||
"github.com/sqshq/sampler/metadata"
|
||||
"runtime/debug"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
@ -72,6 +74,8 @@ func main() {
|
|||
statistics := metadata.GetStatistics(cfg)
|
||||
license := metadata.GetLicense()
|
||||
|
||||
defer handleCrash(statistics, opt, bc)
|
||||
|
||||
if opt.LicenseKey != nil {
|
||||
registerLicense(statistics, opt, bc)
|
||||
}
|
||||
|
@ -105,6 +109,16 @@ func main() {
|
|||
handler.HandleEvents()
|
||||
}
|
||||
|
||||
func handleCrash(statistics *metadata.Statistics, opt config.Options, bc *client.BackendClient) {
|
||||
if rec := recover(); rec != nil {
|
||||
err := rec.(error)
|
||||
if !opt.DisableTelemetry {
|
||||
bc.ReportCrash(fmt.Sprintf("%s\n%s", err.Error(), string(debug.Stack())), statistics)
|
||||
}
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func registerLicense(statistics *metadata.Statistics, opt config.Options, bc *client.BackendClient) {
|
||||
lc, err := bc.RegisterLicenseKey(*opt.LicenseKey, statistics)
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in New Issue