diff --git a/boxcli/midcobra/telemetry.go b/boxcli/midcobra/telemetry.go index a90e5cd490f..17aaf0fc726 100644 --- a/boxcli/midcobra/telemetry.go +++ b/boxcli/midcobra/telemetry.go @@ -59,7 +59,11 @@ func (m *telemetryMiddleware) postRun(cmd *cobra.Command, args []string, runErr return } - segmentClient, _ := segment.NewWithConfig(m.opts.TelemetryKey, segment.Config{Verbose: false}) + segmentClient, _ := segment.NewWithConfig(m.opts.TelemetryKey, + segment.Config{ + Verbose: false, + BatchSize: 1, // We're in a short lived program, so batching doesn't make sense + }) defer func() { _ = segmentClient.Close() @@ -70,15 +74,19 @@ func (m *telemetryMiddleware) postRun(cmd *cobra.Command, args []string, runErr return // Ignore invalid commands } - trackEvent(segmentClient, &event{ + evt := &event{ AppName: m.opts.AppName, AppVersion: m.opts.AppVersion, Command: subcmd.CommandPath(), CommandArgs: subargs, DeviceID: deviceID(), Duration: time.Since(m.startTime), - Failed: runErr != nil, - }) + } + if runErr != nil { + evt.Failed = true + evt.FailedMsg = runErr.Error() + } + trackEvent(segmentClient, evt) } func deviceID() string { @@ -104,6 +112,7 @@ type event struct { DeviceID string Duration time.Duration Failed bool + FailedMsg string } func trackEvent(client segment.Client, evt *event) { @@ -126,6 +135,7 @@ func trackEvent(client segment.Client, evt *event) { Set("command", evt.Command). Set("command_args", evt.CommandArgs). Set("failed", evt.Failed). + Set("failed_msg", evt.FailedMsg). Set("duration", evt.Duration.Milliseconds()), }) }