def handle_exception(self, *args, **kwargs): if not self.client: return if self.app.debug and not self.client.config.debug: return self.client.capture_exception( exc_info=kwargs.get("exc_info"), context={ "request": get_data_from_request( request, capture_body=self.client.config.capture_body in ("errors", "all"), capture_headers=self.client.config.capture_headers, ) }, custom={"app": self.app}, handled=False, ) # End the transaction here, as `request_finished` won't be called when an # unhandled exception occurs. # # Unfortunately, that also means that we can't capture any response data, # as the response isn't ready at this point in time. self.client.end_transaction(result="HTTP 5xx")
def request_finished(self, app, response): if not self.app.debug or self.client.config.debug: rule = request.url_rule.rule if request.url_rule is not None else "" rule = build_name_with_http_method_prefix(rule, request) elasticapm.set_context( lambda: get_data_from_request( request, capture_body=self.client.config.capture_body in ("transactions", "all"), capture_headers=self.client.config.capture_headers, ), "request", ) elasticapm.set_context( lambda: get_data_from_response(response, capture_headers=self.client. config.capture_headers), "response") if response.status_code: result = "HTTP {}xx".format(response.status_code // 100) else: result = response.status elasticapm.set_transaction_name(rule, override=False) elasticapm.set_transaction_result(result, override=False) # Instead of calling end_transaction here, we defer the call until the response is closed. # This ensures that we capture things that happen until the WSGI server closes the response. response.call_on_close(self.client.end_transaction)
def request_started(self, app): if (not self.app.debug or self.client.config.debug) and not self.client.should_ignore_url(request.path): trace_parent = TraceParent.from_headers(request.headers) self.client.begin_transaction("request", trace_parent=trace_parent) elasticapm.set_context( lambda: get_data_from_request(request, self.client.config, constants.TRANSACTION), "request" ) rule = request.url_rule.rule if request.url_rule is not None else "" rule = build_name_with_http_method_prefix(rule, request) elasticapm.set_transaction_name(rule, override=False)
def request_finished(self, app, response): rule = request.url_rule.rule if request.url_rule is not None else "" rule = build_name_with_http_method_prefix(rule, request) request_data = get_data_from_request(request) response_data = get_data_from_response(response) elasticapm.set_transaction_data(request_data, 'request') elasticapm.set_transaction_data(response_data, 'response') if response.status_code: result = 'HTTP {}xx'.format(response.status_code // 100) else: result = response.status self.client.end_transaction(rule, result)
def handle_exception(self, *args, **kwargs): if not self.client: return if self.app.debug and not self.client.config.debug: return self.client.capture_exception( exc_info=kwargs.get('exc_info'), context={'request': get_data_from_request(request)}, custom={ 'app': self.app, }, handled=False, )
def request_finished(self, app, response): rule = request.url_rule.rule if request.url_rule is not None else "" rule = build_name_with_http_method_prefix(rule, request) request_data = lambda: get_data_from_request(request, capture_body=self.client. config.capture_body in ('transactions', 'all')) response_data = lambda: get_data_from_response(response) elasticapm.set_context(request_data, 'request') elasticapm.set_context(response_data, 'response') if response.status_code: result = 'HTTP {}xx'.format(response.status_code // 100) else: result = response.status self.client.end_transaction(rule, result)
def request_started(self, app): if not self.app.debug or self.client.config.debug: trace_parent = TraceParent.from_headers(request.headers) self.client.begin_transaction("request", trace_parent=trace_parent) elasticapm.set_context( lambda: get_data_from_request( request, capture_body=self.client.config.capture_body in ("transactions", "all"), capture_headers=self.client.config.capture_headers, ), "request", ) rule = request.url_rule.rule if request.url_rule is not None else "" rule = build_name_with_http_method_prefix(rule, request) elasticapm.set_transaction_name(rule, override=False)
def handle_exception(self, *args, **kwargs): if not self.client: return if self.app.debug and not self.client.config.debug: return self.client.capture_exception( exc_info=kwargs.get("exc_info"), context={ "request": get_data_from_request( request, capture_body=self.client.config.capture_body in ("errors", "all") ) }, custom={"app": self.app}, handled=False, )
def handle_exception(self, *args, **kwargs): if not self.client: return if disabled_due_to_debug(self.app.config.get('ELASTIC_APM', {}), self.app.config.get('DEBUG', False)): return self.client.capture( 'Exception', exc_info=kwargs.get('exc_info'), data={'context': { 'request': get_data_from_request(request) }}, extra={ 'app': self.app, }, )