File size: 975 Bytes
8da2481
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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