Một liên kết chính thức từ Microsoft về cách thêm thông tin chi tiết Áp dụng đối với một ứng dụng Windows Forms. Từ liên kết:
Trong Azure - portal.azure.com
- Tạo một tài nguyên ứng dụng. :: Dịch vụ mới/nhà phát triển/Thông tin chi tiết về ứng dụng.
- Lưu ý rằng khóa công cụ được tạo, lấy một bản sao và đặt sang một bên, chúng tôi sẽ cần nó khi chúng tôi định cấu hình ứng dụng của bạn.
Trong ứng dụng của bạn
- NuGet - Thêm 'Application Insights API'
- Cấu hình
TelemetryClient
của bạn.
Tôi đang sử dụng MvvmCross trong ứng dụng WPF, khi khởi động tôi tạo một đơn TelemetryClient
mà tôi sử dụng lại trong suốt ứng dụng.
var telemetryClient = new TelemetryClient();
telemetryClient.InstrumentationKey = "your key here from Azure";
telemetryClient.Context.Session.Id = Guid.NewGuid().ToString();
telemetryClient.Context.User.AccountId = Username;
telemetryClient.Context.Component.Version = Settings.Default.Version;
telemetryClient.TrackEvent("Application Start");
Mvx.RegisterSingleton<TelemetryClient>(telemetryClient);
- Ghi một sự kiện/màn hình/ngoại lệ, vv
Bất cứ lúc nào 'một cái gì đó sẽ xảy ra' Tôi sẽ giải quyết TelemetryClient
và ghi lại sự kiện này. Điều này giống như bất kỳ triển khai Ứng dụng thông tin chi tiết nào khác liên quan đến theo dõi và ghi lại.
Như một ví dụ -
//Resolve the telemetry client
readonly TelemetryClient telemetryClient = Mvx.Resolve<TelemetryClient>();
//Record a page View with some extra information
var pageviewTelemetry = new PageViewTelemetry("Observations");
pageviewTelemetry.Properties.Add("Breadcrumb", breadcrumb);
telemetryClient.TrackPageView(pageviewTelemetry);
//Track an event
var eventTelemetry = new EventTelemetry("Observation Saved");
eventTelemetry.Properties.Add("Saved Observation", observation);
telemetryClient.TrackEvent(eventTelemetry);
//Track an exception
try
{
// do work here
}
catch (Exception ex)
{
telemeteryClient.TrackException(ex);
}
- Flush trên Thoát ứng dụng
Application Insights for ứng dụng Windows Desktop không tự động thu thập/gửi bất cứ điều gì. Là một nhà phát triển, một trong những nhu cầu để buộc một tuôn ra tại lối ra ứng dụng.
private void PowerButton_OnClick(object sender, RoutedEventArgs e)
{
var tc = Mvx.Resolve<TelemetryClient>();
if (null != tc)
{
tc.Flush(); // only for desktop apps
}
Application.Current.Shutdown();
}
Hoặc thiết lập một RxTimer để tuôn ra theo một lịch trình ... Tôi quyết định để tuôn ra mỗi 30 phút:
var observable = Observable.Interval(new TimeSpan(0, 0, 30, 0));
observable.Subscribe(_ => Application.Current.Dispatcher.Invoke(new Action(() =>
{
var tc = Mvx.Resolve<TelemetryClient>();
if (null != tc)
{
tc.Flush(); // only for desktop apps
Console.WriteLine("Flush TC");
}
})));
FYI - Tính đến 0.17.0 của ứng dụng Insights API NuGet Package nếu bạn đang ẩn cuộc gọi tuôn ra không treo, nhưng dường như. Trực tuyến, cuộc gọi hoàn tất ngay lập tức, ngoại tuyến có thời gian tạm dừng 5 giây trước khi cuộc gọi kết thúc.
@Sinatr Bạn sẽ nhận được các nhật ký đó từ khách hàng của mình với bạn như thế nào? Và nếu bạn có một triệu khách hàng, bạn sẽ mở một triệu tệp csv trong excel? Hãy xem AI analytics, đó là cấp độ toàn diện: https://azure.microsoft.com/en-us/documentation/articles/app-insights-analytics/ –