Skip to content

feat(otel): LoggerProvider so Boar logs reach Loki (#1529) - #1544

Merged
FabioLeitao merged 1 commit into
mainfrom
feat/1529-otel-logger-provider
Aug 12, 2026
Merged

FabioLeitao merged 1 commit into
mainfrom
feat/1529-otel-logger-provider

Conversation

@FabioLeitao

Copy link
Copy Markdown
Collaborator

Summary

  • Add LoggerProvider + BatchLogRecordProcessor + OTLPLogExporter in core/otel_setup.py, same endpoint/insecure policy as traces/metrics.
  • Bridge Python stdlib logging via opentelemetry.instrumentation.logging.LoggingHandler (extra [otel] dep); emit boar_fast_filter status line after setup.
  • Lab collector already accepts OTLP logs (otlp receiver → otlp_http/logs); no current send_failed on that path.
  • E2E evidence: docs/ops/evidence/otel_1529_loggerprovider_loki_2026-08-12.json — Grafana Loki query_range returned 5 lines for marker db1529-e2e2-1786537170 with service_name=data-boar.

Closes #1529

Test plan

  • uv run pytest tests/test_otel_setup_1500.py -v (LoggerProvider + stdlib bridge unit coverage)
  • ./scripts/check-all.sh green locally (pre-commit + full pytest + Bandit/Zizmor)
  • With DATA_BOAR_OTEL_ENABLED=1 and OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4317, emit unique marker logs + force_flush
  • Confirm via Grafana API: GET /api/datasources/proxy/uid/loki/loki/api/v1/query_range with {service_name="data-boar"} |= "<marker>" — matching lines in Loki (not code-only)
  • Collector counters: otelcol_receiver_accepted_log_records_total{receiver="otlp"} and otelcol_exporter_sent_log_records_total{exporter="otlp_http/logs"} increased; no live send_failed on OTLP logs path
  • CI green on this PR

…1529)

Wire OTLP logs beside traces/metrics (same gap class as OpenLIT-without-logs)
and record lab E2E proof via Grafana Loki query_range.
@FabioLeitao
FabioLeitao merged commit cf2f7a2 into main Aug 12, 2026
20 checks passed
@FabioLeitao
FabioLeitao deleted the feat/1529-otel-logger-provider branch August 28, 2026 19:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[P3][observability] otel_setup.py has no LoggerProvider — app logs never reach Loki, no log-based proof of boar_fast_filter license-enforced runs

1 participant