Agent Logs
Agent logs provide a structured, time-stamped record of every step the agent took. Good logs enable debugging, performance analysis, and compliance auditing.
6 min•By Priygop Team•Updated 2026
Log Structure
Log Structure
# Structured agent logging system
import json
import time
from datetime import datetime, timezone
class AgentLogger:
def __init__(self, agent_id: str, task_id: str):
self.agent_id = agent_id
self.task_id = task_id
self.entries = []
def _log(self, level: str, event: str, **kwargs):
entry = {
"timestamp": datetime.now(timezone.utc).isoformat(),
"level": level,
"agent_id": self.agent_id,
"task_id": self.task_id,
"event": event,
**kwargs
}
self.entries.append(entry)
# In production: write to structured logging service (e.g., Datadog, CloudWatch)
print(json.dumps(entry, default=str))
return entry
def task_start(self, goal: str, max_steps: int):
return self._log("INFO", "task_start", goal=goal[:80], max_steps=max_steps)
def step_start(self, step: int, action: str, args_summary: dict):
return self._log("INFO", "step_start", step=step, action=action,
args_summary={k: str(v)[:50] for k, v in args_summary.items()})
def step_success(self, step: int, action: str, duration_ms: float):
return self._log("INFO", "step_success", step=step, action=action,
duration_ms=round(duration_ms, 1))
def step_error(self, step: int, action: str, error_type: str, error: str):
return self._log("ERROR", "step_error", step=step, action=action,
error_type=error_type, error=error[:200])
def task_complete(self, steps: int, duration_s: float, outcome: str):
return self._log("INFO", "task_complete", steps=steps,
duration_s=round(duration_s, 2), outcome=outcome)
# Usage
logger = AgentLogger("agent-support-1", "TASK-001")
logger.task_start("Process refund for ORD-123", max_steps=10)
t0 = time.time()
logger.step_start(1, "get_order", {"order_id": "ORD-123"})
time.sleep(0.01)
logger.step_success(1, "get_order", duration_ms=(time.time()-t0)*1000)
logger.task_complete(steps=1, duration_s=time.time()-t0, outcome="success")
print(f"\nTotal log entries: {len(logger.entries)}")