示例#1
0
 public WinFormsUnhandledExceptionsReporter(ITelemetryCollector telemetryCollector) : base(telemetryCollector)
 {
     Application.ThreadException += (sender, e) =>
     {
         telemetryCollector.ReportException(e.Exception, "Application.ThreadException");
     };
 }
示例#2
0
 public static void Setup(ITelemetryCollector telemetryCollector)
 {
     Application.ThreadException += (sender, e) =>
     {
         telemetryCollector.ReportException(e.Exception, "Application.ThreadException");
     };
 }
示例#3
0
        public static void Setup(ITelemetryCollector telemetryCollector, IShutdown shutdown)
        {
            void unhandledExceptionEventHandler(object sender, UnhandledExceptionEventArgs e)
            {
                if (e.ExceptionObject is Exception ex)
                {
                    telemetryCollector.ReportException(ex, "Domain.UnhandledException");
                }
                else
                {
                    telemetryCollector.ReportException(
                        new Exception(e.ExceptionObject != null ? e.ExceptionObject.GetType().ToString() : "null exception object"),
                        "Domain.UnhandledException (custom exception)");
                }
            }

            AppDomain.CurrentDomain.UnhandledException += unhandledExceptionEventHandler;

            void unobservedTaskExceptionEventHandler(object sender, UnobservedTaskExceptionEventArgs e)
            {
                telemetryCollector.ReportException(e.Exception, "TaskScheduler.UnobservedTaskException");
            }

            TaskScheduler.UnobservedTaskException += unobservedTaskExceptionEventHandler;

            shutdown.Phase2Cleanup += (s, e) =>
            {
                AppDomain.CurrentDomain.UnhandledException -= unhandledExceptionEventHandler;
                TaskScheduler.UnobservedTaskException      -= unobservedTaskExceptionEventHandler;
            };
        }
示例#4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Fruit"/> class.
        /// </summary>
        public Fruit()
        {
            // Get instance which stores telemetry data across all modules.
            ITelemetryCollector fruitTelemetryCollector = TelemetryCollector.Instance;

            // Register telemetry.
            fruitTelemetryCollector.RegisterTelemetry("FruitTelemetry", new FruitTelemetry());
        }
示例#5
0
 public WebHookService(IMessageBus messageBus, IOptions <AppSettings> options, ITelemetryCollector telemetryCollector)
 {
     _messageBus         = messageBus ?? throw new ArgumentNullException(nameof(messageBus));
     _options            = options ?? throw new ArgumentNullException(nameof(options));
     _telemetryCollector = telemetryCollector ?? throw new ArgumentNullException(nameof(telemetryCollector));
     _webHooks           = new ConcurrentQueue <WebHookRecord>();
     _webHooksInfo       = new ConcurrentDictionary <int, WebHookInfo>();
 }
示例#6
0
        public void BeforeEach()
        {
            storage          = Substitute.For <Persistence.IStorageManager>();
            uploader         = Substitute.For <ITelemetryUploader>();
            instancesCounter = Substitute.For <MultiInstance.IInstancesCounter>();
            shutdown         = Substitute.For <IShutdown>();
            traceAccess      = Substitute.For <IMemBufferTraceAccess>();

            collector = new TelemetryCollector(
                storage, uploader,
                new SerialSynchronizationContext(),
                instancesCounter, shutdown,
                traceAccess,
                new TraceSourceFactory()
                );

            uploader.IsIssuesReportingConfigured.Returns(true);
        }
示例#7
0
        /// <summary>
        /// Sell specified number of fruits.
        /// </summary>
        /// <param name="soldQuantity">Number of fruits to be sold.</param>
        public void SellFruit(int soldQuantity)
        {
            if (soldQuantity < 0)
            {
                throw new ArgumentException();
            }
            // This is the intended functionality of this method.
            Console.WriteLine(string.Format(CultureInfo.CurrentCulture, "{0} fruits sold.", soldQuantity));

            // Get instance which stores telemetry data across all modules.
            ITelemetryCollector fruitTelemetryCollector = TelemetryCollector.Instance;

            // Extract your telemetry data from the collector.
            FruitTelemetry fruitTelemetry = (FruitTelemetry)fruitTelemetryCollector.GetTelemetryObject("FruitTelemetry");

            // Here, use whatever method you have created to update telemetry information.
            // Finally, telemetry data should be stored in the dataCapture property.
            // Everything else is flexible.
            fruitTelemetry.Calculate(soldQuantity);
        }
 public UnhandledExceptionsReporter(ITelemetryCollector telemetryCollector)
 {
     AppDomain.CurrentDomain.UnhandledException += (sender, e) =>
     {
         var ex = e.ExceptionObject as Exception;
         if (ex != null)
         {
             telemetryCollector.ReportException(ex, "Domain.UnhandledException");
         }
         else
         {
             telemetryCollector.ReportException(
                 new Exception(e.ExceptionObject != null ? e.ExceptionObject.GetType().ToString() : "null exception object"),
                 "Domain.UnhandledException (custom exception)");
         }
     };
     TaskScheduler.UnobservedTaskException += (sender, e) =>
     {
         telemetryCollector.ReportException(e.Exception, "TaskScheduler.UnobservedTaskException");
     };
 }
示例#9
0
 public TelemetryClient(ITelemetryCollector telemetryCollector, IScheduler scheduler, Func <string, ITelemetryProcessor> processorFactory)
 {
     _telemetryCollector = telemetryCollector;
     _processorFactory   = processorFactory;
     _scheduler          = scheduler;
 }
示例#10
0
 public ResourcesService(IResourcesRepository repository, IMessageBus messageBus, ITelemetryCollector telemetryCollector)
 {
     _repository         = repository ?? throw new ArgumentNullException(nameof(repository));
     _messageBus         = messageBus ?? throw new ArgumentNullException(nameof(messageBus));
     _telemetryCollector = telemetryCollector ?? throw new ArgumentNullException(nameof(telemetryCollector));
 }
 public PerfomanceMonitor(ITelemetryCollector telemetryCollector)
 {
     _telemetryCollector = telemetryCollector ?? throw new ArgumentNullException(nameof(telemetryCollector));
 }
 public ResourcesController(IResourceService service, ITelemetryCollector telemetryCollector)
 {
     _service            = service ?? throw new ArgumentNullException(nameof(service));
     _telemetryCollector = telemetryCollector ?? throw new ArgumentNullException(nameof(telemetryCollector));
 }