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
Functions
Creates a new log event from an Erlang :logger event.
Converts a log event to a map suitable for JSON encoding.
Types
@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
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
%splaceholders:["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"], ...}
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.