7.8 KiB
7.8 KiB
Logging Patterns for Agents
Array-based structured logging format.
Related: LOGGING_INTEGRATION.md | AGENT_GUARDRAILS.md
Overview
This document establishes array-based structured logging patterns for AI agent operations. Consistent logging enables debugging, auditing, and integration with external systems.
Array-Based Logging Pattern
Core Concept
Logs are stored as an array of structured entries, enabling:
- Easy filtering and searching
- Machine-readable format
- Consistent structure across operations
- Simple export to external systems
LOG ARRAY STRUCTURE:
logs = [
{ entry1 },
{ entry2 },
{ entry3 },
...
]
Standard Log Entry Structure
{
"timestamp": "2026-01-14T15:30:00.000Z",
"level": "INFO",
"category": "file_operation",
"action": "read",
"target": "/path/to/file.py",
"result": "success",
"duration_ms": 45,
"metadata": {
"lines_read": 150,
"file_size": 4096
}
}
Required Fields
| Field | Type | Description |
|---|---|---|
| timestamp | ISO8601 string | When the action occurred |
| level | string | Log level (DEBUG, INFO, WARN, ERROR) |
| category | string | Category of operation |
| action | string | What was done |
| target | string | What was acted upon |
| result | string | success, failure, skipped |
Optional Fields
| Field | Type | Description |
|---|---|---|
| duration_ms | number | How long it took |
| metadata | object | Additional context |
| error | string | Error message if failed |
| stack_trace | string | Stack trace if error |
| agent_id | string | Which agent logged this |
Log Levels
| Level | Code | Use For | Example |
|---|---|---|---|
| DEBUG | 10 | Detailed diagnostics | "Reading line 45-50" |
| INFO | 20 | Normal operations | "File edited successfully" |
| WARN | 30 | Potential issues | "File larger than expected" |
| ERROR | 40 | Failures | "Edit failed: string not found" |
Level Selection Guide
USE DEBUG:
- Internal decision points
- Variable values during processing
- Step-by-step progress
USE INFO:
- Operation start/complete
- Significant milestones
- User-relevant events
USE WARN:
- Unexpected but handled situations
- Deprecation notices
- Performance concerns
USE ERROR:
- Operation failures
- Unhandled exceptions
- Recovery needed
Standard Log Categories
File Operations Log
{
"category": "file_operation",
"action": "read | write | edit | delete",
"target": "/path/to/file",
"metadata": {
"lines_affected": 10,
"old_content": "...",
"new_content": "..."
}
}
Git Operations Log
{
"category": "git_operation",
"action": "commit | push | pull | checkout | status",
"target": "branch_name or file",
"metadata": {
"commit_hash": "abc123",
"message": "commit message",
"files_changed": 3
}
}
Validation Results Log
{
"category": "validation",
"action": "syntax_check | test_run | lint",
"target": "/path/to/file",
"result": "pass | fail",
"metadata": {
"errors": [],
"warnings": [],
"test_count": 15,
"pass_count": 15
}
}
Decision Points Log
{
"category": "decision",
"action": "chose_path | skipped | escalated",
"target": "decision_context",
"metadata": {
"options_considered": ["A", "B", "C"],
"chosen": "A",
"reason": "Best fit for requirements"
}
}
Log Array Management
Initialization
At session start:
logs = []
Appending Entries
For each operation:
logs.append({
"timestamp": current_time(),
"level": "INFO",
...
})
Log Rotation/Limits
RECOMMENDED LIMITS:
- Max entries per session: 1000
- When limit reached: Archive oldest 500, keep recent 500
- On session end: Export full log
Log Export
{
"session_id": "unique-session-id",
"start_time": "2026-01-14T15:00:00Z",
"end_time": "2026-01-14T16:30:00Z",
"agent": "Claude Opus 4.5",
"task_summary": "Implemented feature X",
"log_count": 45,
"logs": [...]
}
Log Output Formats
Human-Readable Format
[2026-01-14 15:30:00] INFO [file_operation] read /path/to/file.py → success (45ms)
[2026-01-14 15:30:01] INFO [file_operation] edit /path/to/file.py → success (120ms)
[2026-01-14 15:30:02] INFO [validation] syntax_check /path/to/file.py → pass
[2026-01-14 15:30:03] ERROR [validation] test_run tests/test_file.py → fail
Machine-Readable Format (JSON Lines)
{"timestamp":"2026-01-14T15:30:00Z","level":"INFO","category":"file_operation","action":"read","target":"/path/to/file.py","result":"success"}
{"timestamp":"2026-01-14T15:30:01Z","level":"INFO","category":"file_operation","action":"edit","target":"/path/to/file.py","result":"success"}
Summary Format
SESSION SUMMARY
===============
Duration: 1h 30m
Operations: 45
- File operations: 20
- Git operations: 10
- Validations: 15
Results:
- Success: 43
- Warnings: 1
- Errors: 1
Files Modified:
- /path/to/file1.py
- /path/to/file2.py
Integration with Sprints
Sprint Execution Logging
For each sprint step:
1. Log step start (INFO)
2. Log each sub-operation (DEBUG/INFO)
3. Log validation results (INFO/ERROR)
4. Log step complete (INFO)
Sprint Completion Reports
{
"sprint_id": "SPRINT-2026-01-14",
"status": "COMPLETE",
"steps_completed": 5,
"files_modified": ["file1.py", "file2.py"],
"commits_created": 3,
"validation_results": {
"syntax_checks": "all_pass",
"tests": "15/15 pass"
},
"log_summary": {
"total_entries": 45,
"errors": 0,
"warnings": 1
}
}
Anti-Patterns
What NOT to Do
DON'T:
- Log sensitive data (passwords, tokens, PII)
- Log entire file contents (use summaries)
- Skip logging errors
- Use inconsistent formats
- Forget timestamps
- Log at wrong level (DEBUG spam or missing INFO)
DO:
- Sanitize sensitive data before logging
- Log operation summaries
- Always log errors with context
- Use consistent structure
- Always include timestamp
- Choose appropriate level
Quick Reference
+------------------------------------------------------------------+
| LOGGING PATTERNS QUICK REFERENCE |
+------------------------------------------------------------------+
| ENTRY STRUCTURE: |
| { |
| "timestamp": "ISO8601", |
| "level": "DEBUG|INFO|WARN|ERROR", |
| "category": "file_operation|git_operation|validation|...", |
| "action": "what was done", |
| "target": "what was acted on", |
| "result": "success|failure" |
| } |
+------------------------------------------------------------------+
| LOG LEVELS: |
| DEBUG - Detailed diagnostics |
| INFO - Normal operations |
| WARN - Potential issues |
| ERROR - Failures |
+------------------------------------------------------------------+
| CATEGORIES: |
| file_operation, git_operation, validation, decision |
+------------------------------------------------------------------+
Authored by: TheArchitectit Document Owner: Project Maintainers Last Updated: 2026-01-14 Line Count: ~320