Context
Any production tool system.
Problem
Without logs, you can't debug issues or detect abuse.
Solution
Comprehensive audit logging:
- What: Tool name, parameters (redacted)
- Who: User ID, session ID
- When: Timestamp
- Result: Success/failure, duration
- What: Tool name, parameters (redacted)
- Who: User ID, session ID
- When: Timestamp
- Result: Success/failure, duration
Examples
Python
@tool
def update_record(
context: Context,
record_id: str,
**updates
) -> UpdateResult:
"""Update a record with full audit trail."""
audit_log.record(
tool="update_record",
user_id=context.user.id,
session_id=context.session.id,
parameters=redact_sensitive({"record_id": record_id, **updates}),
timestamp=datetime.utcnow()
)
try:
result = records_api.update(record_id, **updates)
audit_log.record_result(success=True, duration=elapsed)
return result
except Exception as e:
audit_log.record_result(success=False, error=str(e))
raise Considerations
- Redact sensitive data before logging
- Include enough context for debugging
- Set appropriate retention periods