Skip to content

Commit 1756666

Browse files
committed
fix: Add logging to tool failures
1 parent c5aeebc commit 1756666

1 file changed

Lines changed: 13 additions & 6 deletions

File tree

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
import logging
12
import time
23
from strands.hooks import HookProvider, HookRegistry, AfterToolCallEvent
34

5+
logger = logging.getLogger(__name__)
6+
47

58
class FailOnToolError(HookProvider):
69
def __init__(self, max_retries: int = 3, retry_delay: float = 1.0):
@@ -12,17 +15,21 @@ def register_hooks(self, registry: HookRegistry) -> None:
1215

1316
def check_result(self, event: AfterToolCallEvent) -> None:
1417
if event.result.get("isError", False):
18+
tool_name = event.tool_use["name"]
19+
error_content = event.result.get("content", [{}])[0].get("text", "Unknown error")
20+
logger.warning(f"Tool {tool_name} failed: {error_content}")
21+
1522
for attempt in range(self.max_retries):
23+
logger.info(f"Retrying tool {tool_name} (attempt {attempt + 1}/{self.max_retries})")
1624
time.sleep(self.retry_delay)
1725
try:
18-
# Retry the tool execution
1926
result = event.selected_tool(event.tool_use, event.invocation_state)
2027
if not result.get("isError", False):
28+
logger.info(f"Tool {tool_name} succeeded on retry {attempt + 1}")
2129
event.result = result
2230
return
23-
except Exception:
31+
except Exception as e:
32+
logger.warning(f"Retry {attempt + 1} failed: {e}")
2433
continue
25-
26-
# All retries failed
27-
error_content = event.result.get("content", [{}])[0].get("text", "Unknown error")
28-
raise RuntimeError(f"Tool {event.tool_use['name']} failed after {self.max_retries} retries: {error_content}")
34+
35+
raise RuntimeError(f"Tool {tool_name} failed after {self.max_retries} retries: {error_content}")

0 commit comments

Comments
 (0)