Source code for applicationinsights.exceptions.enable

import sys
from applicationinsights import TelemetryClient, channel

original_excepthook = None
telemetry_channel = None
enabled_instrumentation_keys = []


[docs]def enable(instrumentation_key, *args, **kwargs): """Enables the automatic collection of unhandled exceptions. Captured exceptions will be sent to the Application Insights service before being re-thrown. Multiple calls to this function with different instrumentation keys result in multiple instances being submitted, one for each key. .. code:: python from applicationinsights.exceptions import enable # set up exception capture enable('<YOUR INSTRUMENTATION KEY GOES HERE>') # raise an exception (this will be sent to the Application Insights service as an exception telemetry object) raise Exception('Boom!') Args: instrumentation_key (str). the instrumentation key to use while sending telemetry to the service. """ if not instrumentation_key: raise Exception('Instrumentation key was required but not provided') global original_excepthook global telemetry_channel telemetry_channel = kwargs.get('telemetry_channel') if not original_excepthook: original_excepthook = sys.excepthook sys.excepthook = intercept_excepthook if instrumentation_key not in enabled_instrumentation_keys: enabled_instrumentation_keys.append(instrumentation_key)
def intercept_excepthook(type, value, traceback): client = TelemetryClient('temp_key', telemetry_channel) for instrumentation_key in enabled_instrumentation_keys: client.context.instrumentation_key = instrumentation_key client.track_exception(type, value, traceback) client.flush() original_excepthook(type, value, traceback)