View Source Sentry.LogEvent (Sentry v12.0.3)

Represents a log event that can be sent to Sentry.

Log events follow the Sentry Logs Protocol as defined in: https://develop.sentry.dev/sdk/telemetry/logs/

This module is used internally by Sentry.LogsHandler to create structured log events from Erlang :logger events.

Summary

Types

t()

A log event struct.

Functions

Creates a new log event from an Erlang :logger event.

Converts a log event to a map suitable for JSON encoding.

Types

Link to this type

level()

View Source (since 12.0.0)
@type level() :: :trace | :debug | :info | :warn | :error | :fatal
@type t() :: %Sentry.LogEvent{
  attributes: map(),
  body: String.t(),
  level: level(),
  parameters: list() | nil,
  span_id: String.t() | nil,
  template: String.t() | nil,
  timestamp: float(),
  trace_id: String.t() | nil
}

A log event struct.

Functions

Link to this function

from_logger_event(log_event, attrs \\ %{}, parameters \\ nil)

View Source (since 12.0.0)
@spec from_logger_event(
  :logger.log_event(),
  map(),
  [String.t()] | %{optional(String.t()) => String.t()} | nil
) :: t()

Creates a new log event from an Erlang :logger event.

Optionally accepts parameters for message template interpolation. Parameters can be:

  • A list for positional %s placeholders: ["Jane", "NYC"]
  • A map for named %{key} placeholders: %{name: "Jane", city: "NYC"}

Examples

iex> log_event = %{level: :info, msg: {:string, "Hello world"}, meta: %{}}
iex> Sentry.LogEvent.from_logger_event(log_event, %{})
%Sentry.LogEvent{
  level: :info,
  body: "Hello world",
  timestamp: _,
  attributes: %{}
}

# With positional parameters
iex> log_event = %{level: :info, msg: {:string, "Hello %s"}, meta: %{}}
iex> Sentry.LogEvent.from_logger_event(log_event, %{}, ["Jane"])
%Sentry.LogEvent{body: "Hello Jane", template: "Hello %s", parameters: ["Jane"], ...}

# With named parameters
iex> log_event = %{level: :info, msg: {:string, "Hello %{name}"}, meta: %{}}
iex> Sentry.LogEvent.from_logger_event(log_event, %{}, %{name: "Jane"})
%Sentry.LogEvent{body: "Hello Jane", template: "Hello %{name}", parameters: ["Jane"], ...}
Link to this function

to_map(log_event)

View Source (since 12.0.0)
@spec to_map(t()) :: %{optional(atom()) => term()}

Converts a log event to a map suitable for JSON encoding.

The output matches the Sentry log schema with top-level fields: timestamp, level, body, trace_id, span_id, and attributes. Environment, release, and server_name are added to attributes with "sentry." prefix.