diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 7b9e87f9..f9675c68 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -125,8 +125,8 @@ def __new__(cls, func): else: logger.debug("datadog_lambda_wrapper already wrapped") return _NoopDecorator(func) - except Exception: - traceback.print_exc() + except Exception as e: + logger.error(format_err_with_traceback(e)) return func def __init__(self, func): @@ -204,8 +204,8 @@ def __init__(self, func): patch_all() logger.debug("datadog_lambda_wrapper initialized") - except Exception: - traceback.print_exc() + except Exception as e: + logger.error(format_err_with_traceback(e)) def __call__(self, event, context, **kwargs): """Executes when the wrapped function gets called""" @@ -291,8 +291,8 @@ def _before(self, event, context): if profiling_env_var and is_new_sandbox(): self.prof.start(stop_on_exit=False, profile_children=True) logger.debug("datadog_lambda_wrapper _before() done") - except Exception: - traceback.print_exc() + except Exception as e: + logger.error(format_err_with_traceback(e)) def _after(self, event, context): try: @@ -358,8 +358,14 @@ def _after(self, event, context): event.get("requestContext", {}).get("requestId") ) logger.debug("datadog_lambda_wrapper _after() done") - except Exception: - traceback.print_exc() + except Exception as e: + logger.error(format_err_with_traceback(e)) + + +def format_err_with_traceback(e): + return "Error {}. Traceback: {}".format( + e, traceback.format_exc().replace("\n", "\r") + ) datadog_lambda_wrapper = _LambdaDecorator