Home Knowledge Base Structured Logging

Structured Logging is the practice of emitting log records as machine-parseable structured data (typically JSON) rather than unstructured human-readable text — enabling powerful querying, aggregation, alerting, and analysis of AI system behavior, performance, and errors using SQL-like queries and dashboards rather than brittle string parsing and grep-based log hunting.

What Is Structured Logging?

Why Structured Logging Matters for AI Systems

Structured Logging Implementation

Python with structlog (Recommended):

import structlog
from datetime import datetime

logger = structlog.get_logger()

def process_llm_request(request_id: str, user_id: str, query: str) -> str:
    start_time = datetime.utcnow()

    try:
        response = llm.generate(query)
        duration_ms = (datetime.utcnow() - start_time).total_seconds() * 1000

        logger.info(
            "llm_request_completed",
            request_id=request_id,
            user_id=user_id,
            model="gpt-4o",
            input_tokens=count_tokens(query),
            output_tokens=count_tokens(response),
            latency_ms=round(duration_ms),
            success=True
        )
        return response

    except RateLimitError as e:
        logger.warning(
            "llm_rate_limit",
            request_id=request_id,
            user_id=user_id,
            retry_after=e.retry_after,
            success=False
        )
        raise

Output JSON:

{
  "timestamp": "2024-01-15T10:32:15.234Z",
  "level": "info",
  "event": "llm_request_completed",
  "request_id": "req_abc123",
  "user_id": "usr_456",
  "model": "gpt-4o",
  "input_tokens": 342,
  "output_tokens": 187,
  "latency_ms": 1847,
  "success": true
}

Key Fields for AI System Logs

FieldTypePurpose
timestampISO 8601Time correlation
request_idUUIDRequest tracing
user_idStringPer-user analysis
session_idStringConversation tracking
eventStringLog type classification
modelStringModel version tracking
input_tokensIntegerCost accounting
output_tokensIntegerCost accounting
latency_msIntegerPerformance monitoring
retry_countIntegerReliability tracking
error_typeStringError classification
rag_chunks_retrievedIntegerRAG performance
confidenceFloatQuality tracking
successBooleanSuccess rate monitoring

Log Level Strategy for AI Systems

Structured Log Querying Examples

In CloudWatch Logs Insights:

-- Average latency by model
fields @timestamp, model, latency_ms
| filter event = "llm_request_completed"
| stats avg(latency_ms) as avg_latency by model
| sort avg_latency desc

-- Error rate by hour
filter success = 0
| stats count() as errors by bin(1h)

-- Token cost by user (top 10)
filter event = "llm_request_completed"
| stats sum(input_tokens + output_tokens) as total_tokens by user_id
| sort total_tokens desc
| limit 10

PII Handling in Logs

AI system logs must handle personally identifiable information carefully:

Structured logging is the observability foundation that transforms AI systems from black boxes into monitorable, debuggable, and auditable production infrastructure — by emitting machine-parseable structured data from every significant operation, teams gain the ability to answer operational questions — why did that request fail, which model version is slower, which users are approaching token limits — with queries rather than grep, enabling data-driven AI operations at scale.

structured loggingjsonsearchable

Explore 500+ Semiconductor & AI Topics

From EUV lithography to CUDA optimization — search the full knowledge base or chat with our AI assistant.