From 8fcf4c41622c288254e56653a885cc853e271625 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 21 Aug 2023 22:13:22 -0400 Subject: [PATCH 1/4] change the traceback format to print in one line --- datadog_lambda/wrapper.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 7b9e87f9..fd0231c4 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -125,9 +125,8 @@ def __new__(cls, func): else: logger.debug("datadog_lambda_wrapper already wrapped") return _NoopDecorator(func) - except Exception: - traceback.print_exc() - return func + except Exception as e: + logger.error("Error %s. Traceback: %s", e, traceback.format_exc().replace("\n", "\r")) def __init__(self, func): """Executes when the wrapped function gets wrapped""" @@ -204,8 +203,8 @@ def __init__(self, func): patch_all() logger.debug("datadog_lambda_wrapper initialized") - except Exception: - traceback.print_exc() + except Exception as e: + logger.error("Error %s. Traceback: %s", e, traceback.format_exc().replace("\n", "\r")) def __call__(self, event, context, **kwargs): """Executes when the wrapped function gets called""" @@ -291,8 +290,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("Error %s. Traceback: %s", e, traceback.format_exc().replace("\n", "\r")) def _after(self, event, context): try: @@ -358,8 +357,8 @@ 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("Error %s. Traceback: %s", e, traceback.format_exc().replace("\n", "\r")) datadog_lambda_wrapper = _LambdaDecorator From a2d44c1102286ef33d99beea096b834fefda9ec1 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 21 Aug 2023 22:14:38 -0400 Subject: [PATCH 2/4] fix --- datadog_lambda/wrapper.py | 1 + 1 file changed, 1 insertion(+) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index fd0231c4..dc080845 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -127,6 +127,7 @@ def __new__(cls, func): return _NoopDecorator(func) except Exception as e: logger.error("Error %s. Traceback: %s", e, traceback.format_exc().replace("\n", "\r")) + return func def __init__(self, func): """Executes when the wrapped function gets wrapped""" From c8360121d040fa65ac8d002305ecc0be9d173362 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 22 Aug 2023 09:52:20 -0400 Subject: [PATCH 3/4] format --- datadog_lambda/wrapper.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index dc080845..700a8a87 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -126,7 +126,9 @@ def __new__(cls, func): logger.debug("datadog_lambda_wrapper already wrapped") return _NoopDecorator(func) except Exception as e: - logger.error("Error %s. Traceback: %s", e, traceback.format_exc().replace("\n", "\r")) + logger.error( + "Error %s. Traceback: %s", e, traceback.format_exc().replace("\n", "\r") + ) return func def __init__(self, func): @@ -205,7 +207,9 @@ def __init__(self, func): logger.debug("datadog_lambda_wrapper initialized") except Exception as e: - logger.error("Error %s. Traceback: %s", e, traceback.format_exc().replace("\n", "\r")) + logger.error( + "Error %s. Traceback: %s", e, traceback.format_exc().replace("\n", "\r") + ) def __call__(self, event, context, **kwargs): """Executes when the wrapped function gets called""" @@ -292,7 +296,9 @@ def _before(self, event, context): self.prof.start(stop_on_exit=False, profile_children=True) logger.debug("datadog_lambda_wrapper _before() done") except Exception as e: - logger.error("Error %s. Traceback: %s", e, traceback.format_exc().replace("\n", "\r")) + logger.error( + "Error %s. Traceback: %s", e, traceback.format_exc().replace("\n", "\r") + ) def _after(self, event, context): try: @@ -359,7 +365,9 @@ def _after(self, event, context): ) logger.debug("datadog_lambda_wrapper _after() done") except Exception as e: - logger.error("Error %s. Traceback: %s", e, traceback.format_exc().replace("\n", "\r")) + logger.error( + "Error %s. Traceback: %s", e, traceback.format_exc().replace("\n", "\r") + ) datadog_lambda_wrapper = _LambdaDecorator From 8bcd91f4a9b5bd66fe78b1d3948753ca6919fca9 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 22 Aug 2023 10:58:43 -0400 Subject: [PATCH 4/4] refactor out to a helper method --- datadog_lambda/wrapper.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 700a8a87..f9675c68 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -126,9 +126,7 @@ def __new__(cls, func): logger.debug("datadog_lambda_wrapper already wrapped") return _NoopDecorator(func) except Exception as e: - logger.error( - "Error %s. Traceback: %s", e, traceback.format_exc().replace("\n", "\r") - ) + logger.error(format_err_with_traceback(e)) return func def __init__(self, func): @@ -207,9 +205,7 @@ def __init__(self, func): logger.debug("datadog_lambda_wrapper initialized") except Exception as e: - logger.error( - "Error %s. Traceback: %s", e, traceback.format_exc().replace("\n", "\r") - ) + logger.error(format_err_with_traceback(e)) def __call__(self, event, context, **kwargs): """Executes when the wrapped function gets called""" @@ -296,9 +292,7 @@ def _before(self, event, context): self.prof.start(stop_on_exit=False, profile_children=True) logger.debug("datadog_lambda_wrapper _before() done") except Exception as e: - logger.error( - "Error %s. Traceback: %s", e, traceback.format_exc().replace("\n", "\r") - ) + logger.error(format_err_with_traceback(e)) def _after(self, event, context): try: @@ -365,9 +359,13 @@ def _after(self, event, context): ) logger.debug("datadog_lambda_wrapper _after() done") except Exception as e: - logger.error( - "Error %s. Traceback: %s", e, traceback.format_exc().replace("\n", "\r") - ) + 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