defmodule Plausible.OpenTelemetry.Logger do @moduledoc """ Telemetry handler that adds the OpenTelemetry trace_id to Logger metadata. This enables correlation between log lines and distributed traces. The trace_id is extracted from the current OTel span context and added to the Logger metadata when Phoenix router dispatch starts. """ @doc """ Attaches telemetry handlers to set trace_id in Logger metadata. Should be called during application startup, after OpentelemetryPhoenix.setup(). """ def setup do :telemetry.attach( "plausible-otel-logger-metadata", [:phoenix, :router_dispatch, :start], &__MODULE__.handle_router_dispatch_start/4, %{} ) end @doc false def handle_router_dispatch_start(_event, _measurements, _metadata, _config) do case Plausible.OpenTelemetry.current_trace_id() do nil -> :ok trace_id_hex -> Logger.metadata(trace_id: trace_id_hex) end end end