From 987931a053f349e72b0bd5c185cee253fee28db9 Mon Sep 17 00:00:00 2001 From: Sheng Lundquist Date: Mon, 16 Oct 2023 08:52:07 -0700 Subject: [PATCH 1/2] Crash reporting now takes optional argument for log level --- .../agent0/hyperdrive/crash_report/crash_report.py | 11 +++++++++-- lib/agent0/agent0/hyperdrive/exec/trade_loop.py | 8 +++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/agent0/agent0/hyperdrive/crash_report/crash_report.py b/lib/agent0/agent0/hyperdrive/crash_report/crash_report.py index 208d0ddd7a..8dbf2deb39 100644 --- a/lib/agent0/agent0/hyperdrive/crash_report/crash_report.py +++ b/lib/agent0/agent0/hyperdrive/crash_report/crash_report.py @@ -72,7 +72,7 @@ def setup_hyperdrive_crash_report_logging(log_format_string: str | None = None) ) -def log_hyperdrive_crash_report(trade_result: TradeResult) -> None: +def log_hyperdrive_crash_report(trade_result: TradeResult, log_level: int | None = None) -> None: # pylint: disable=too-many-arguments """Log a crash report for a hyperdrive transaction. @@ -81,11 +81,17 @@ def log_hyperdrive_crash_report(trade_result: TradeResult) -> None: trade_result: TradeResult The trade result object that stores all crash information + log_level: int | None + The logging level for this crash report. Defaults to critical. + + Returns ------- None This function does not return any value. """ + if log_level is None: + log_level = logging.CRITICAL exception = trade_result.exception formatted_exception = repr(exception) @@ -108,7 +114,8 @@ def log_hyperdrive_crash_report(trade_result: TradeResult) -> None: assert exception is not None formatted_traceback = "".join(format_tb(exception.__traceback__)) - logging.critical( + logging.log( + log_level, """Exception: %s\nTrade: %s\nWallet: %s\nPoolInfo: %s\nPoolConfig: %s\nTraceback: %s\n""", formatted_exception, formatted_trade_obj, diff --git a/lib/agent0/agent0/hyperdrive/exec/trade_loop.py b/lib/agent0/agent0/hyperdrive/exec/trade_loop.py index 1ec252d0de..318afc8cfb 100644 --- a/lib/agent0/agent0/hyperdrive/exec/trade_loop.py +++ b/lib/agent0/agent0/hyperdrive/exec/trade_loop.py @@ -99,9 +99,11 @@ def trade_if_new_block( assert trade_result.pool_info is not None # Crash reporting - # TODO add optional argument to crash reporting for logging level - # https://github.com/delvtech/elf-simulations/issues/967 - log_hyperdrive_crash_report(trade_result) + if is_slippage: + log_hyperdrive_crash_report(trade_result, logging.WARNING) + else: + # Defaults to CRITICAL + log_hyperdrive_crash_report(trade_result) if halt_on_errors: # Don't halt if slippage detected and halt_on_slippage is false From f0a71f0b2d6155cf2ab81f55c7aab6c101889a3c Mon Sep 17 00:00:00 2001 From: Sheng Lundquist Date: Mon, 16 Oct 2023 08:54:45 -0700 Subject: [PATCH 2/2] docstring formatting --- lib/agent0/agent0/hyperdrive/crash_report/crash_report.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/agent0/agent0/hyperdrive/crash_report/crash_report.py b/lib/agent0/agent0/hyperdrive/crash_report/crash_report.py index 8dbf2deb39..d7b2838d32 100644 --- a/lib/agent0/agent0/hyperdrive/crash_report/crash_report.py +++ b/lib/agent0/agent0/hyperdrive/crash_report/crash_report.py @@ -80,11 +80,9 @@ def log_hyperdrive_crash_report(trade_result: TradeResult, log_level: int | None --------- trade_result: TradeResult The trade result object that stores all crash information - log_level: int | None The logging level for this crash report. Defaults to critical. - Returns ------- None