f1c1dfacb7
This CL enables us to have different crash reporters that report to different backends, this will be useful if we report plugin errors to staging and server errors to prod. Currently doing this with server errors so that we can make the switch over to prod incrementally. For the time being, the staging backend will have our whole crash history, and continue to get new crashes. Reports and dashboards can switch over to the prod backend as we get enough history for those reports to be useful, and when we have switched everything over we can stop reporting to staging entirely. Change-Id: Ie29b4e05c89fd57faf1487a2c2eba3701fc319d0 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/145922 Reviewed-by: Devon Carew <devoncarew@google.com>
telemetry
A library to facilitate reporting analytics and crash reports.
Analytics
This library is designed to allow all Dart SDK tools to easily send analytics information and crash reports. The tools share a common setting to configure sending analytics data. To use this library for a specific tool:
import 'package:telemetry/telemetry.dart';
import 'package:usage/usage.dart';
main() async {
final String myAppTrackingID = ...;
final String myAppName = ...;
Analytics analytics = createAnalyticsInstance(myAppTrackingID, myAppName);
...
analytics.sendScreenView('home');
...
await analytics.waitForLastPing();
}
The analytics object reads from the correct user configuration file automatically without any additional configuration. Analytics will not be sent if the user has opted-out.
Crash reporting
To use the crash reporting functionality, import crash_reporting.dart, and
create a new CrashReportSender instance:
import 'package:telemetry/crash_reporting.dart';
main() {
Analytics analytics = ...;
CrashReportSender sender = new CrashReportSender(analytics);
try {
...
} catch (e, st) {
sender.sendReport(e, st);
}
}
Crash reports will only be sent if the cooresponding [Analytics] object is configured to send analytics.