# Logging, Tracing, and Observability

> Source: https://sukruyusufkaya.com/en/learn/claude-ustaligi/monitoring
> Updated: 2026-05-11T13:48:35.943Z
> Category: Claude Ustalığı
> Module: 9. Production
**TLDR:** OpenTelemetry-compatible LLM tracing, structured log schema, error reporting, prompt-versioned observability.

# Structured Log Şeması

Her LLM çağrısı için minimum log alanları:

```json
{
  "ts": "...",
  "trace_id": "...",
  "span_id": "...",
  "prompt_id": "support_classifier",
  "prompt_version": "1.4.1",
  "model": "claude-sonnet-4-6",
  "temperature": 0.0,
  "max_tokens": 256,
  "input_tokens": 348,
  "output_tokens": 200,
  "cache_read_tokens": 300,
  "latency_ms": 740,
  "stop_reason": "end_turn",
  "tool_calls": [],
  "user_id_hash": "abc...",
  "eval_score": 0.91
}
```

### OpenTelemetry GenAI semantik

Yeni gen-AI semantic convention'ları (`gen_ai.system`, `gen_ai.request.model`, `gen_ai.usage.input_tokens`, vs.) ortaya çıktı. Yeni tracing'i bu standardı kullanarak yaz; aksi halde Datadog / NewRelic / Honeycomb gen-AI dashboard'ları parse edemez.

### Pipeline tracing

Çoklu adım pipeline'da her adım kendi span'i olsun. Parent-child ilişkisiyle 'hangi adım yavaş?' sorusu net cevaplanır.

### PII redaction

Log'a tam metin yazma. PII'leri hash / mask et; sadece prompt_id + user_id_hash + outcome kalsın. Gerektiğinde 'replay'i prompt registry'den yap.

```python
from opentelemetry import trace
tracer = trace.get_tracer(__name__)

with tracer.start_as_current_span("claude.classify") as span:
    span.set_attribute("gen_ai.system", "anthropic")
    span.set_attribute("gen_ai.request.model", "claude-sonnet-4-6")
    span.set_attribute("gen_ai.request.temperature", 0.0)
    resp = client.messages.create(...)
    span.set_attribute("gen_ai.usage.input_tokens", resp.usage.input_tokens)
    span.set_attribute("gen_ai.usage.output_tokens", resp.usage.output_tokens)
    span.set_attribute("gen_ai.response.finish_reason", resp.stop_reason)
```

**Boşluk doldurma egzersizi (text):**
```text
Üretimde her LLM çağrısı için _____ ve prompt_version log'lanmalıdır. PII'ler her zaman _____ olarak yazılır. OpenTelemetry'nin yeni gen-AI namespace'i _____ ile başlar.
```

> ✋ Kontrol noktası: `q-905-mc1`

> 📝 İlgili quiz: `module-9-final`