Exclosured.Telemetry (exclosured v0.1.4)

Copy Markdown

Telemetry events emitted by Exclosured.

Attach handlers to observe WASM compilation, function calls, and events. All events follow the :telemetry.execute/3 convention.

Events

[:exclosured, :compile, :start]

Emitted when a WASM module starts compiling.

  • Measurement: %{system_time: integer}
  • Metadata: %{module: atom}

[:exclosured, :compile, :stop]

Emitted when a WASM module finishes compiling.

  • Measurement: %{duration: integer} (native time units)
  • Metadata: %{module: atom, wasm_size: integer | nil}

[:exclosured, :compile, :error]

Emitted when a WASM module fails to compile.

  • Measurement: %{duration: integer}
  • Metadata: %{module: atom, error: String.t()}

[:exclosured, :wasm, :call]

Emitted when a WASM function is called via LiveView.

  • Measurement: %{}
  • Metadata: %{module: atom, func: String.t()}

[:exclosured, :wasm, :result]

Emitted when a WASM function returns a result.

  • Measurement: %{}
  • Metadata: %{module: atom, func: String.t()}

[:exclosured, :wasm, :emit]

Emitted when WASM sends an event to LiveView.

  • Measurement: %{}
  • Metadata: %{module: atom, event: String.t()}

[:exclosured, :wasm, :error]

Emitted when a WASM function call fails.

  • Measurement: %{}
  • Metadata: %{module: atom, func: String.t(), error: String.t()}

[:exclosured, :wasm, :ready]

Emitted when a WASM module finishes loading in the browser.

  • Measurement: %{}
  • Metadata: %{module: atom}

Example: Logging Handler

:telemetry.attach_many(
  "exclosured-logger",
  [
    [:exclosured, :compile, :stop],
    [:exclosured, :wasm, :call],
    [:exclosured, :wasm, :emit],
    [:exclosured, :wasm, :error]
  ],
  fn event, measurements, metadata, _config ->
    IO.inspect({event, measurements, metadata}, label: "exclosured")
  end,
  nil
)