View Source Appsignal.Span (AppSignal v2.12.1)

Link to this section Summary

Functions

Add an error to an Appsignal.Span by passing an exception from a rescue block, and a stack trace.

Add an error to an Appsignal.Span by passing a kind and reason from a catch block, and a stack trace.

Close an Appsignal.Span with an explicit end time.

Create a child Appsignal.Span with an explicit start time.

Create a root Appsignal.Span with a namespace and a pid.

Create a root Appsignal.Span with a namespace, a pid and an explicit start time.

Sets an Appsignal.Span's name if it was not set before.

Sets an Appsignal.Span's namespace. The namespace is "http_request" or "background_job' to add the span to the "web" and "background" namespaces respectively. Passing another string creates a custom namespace to store the Appsignal.Span's samples in.

Sets sample data for an Appsignal.Span, unless it has already been set.

Sets the "appsignal:body" attribute with an SQL query string.

Link to this section Types

@type t() :: %Appsignal.Span{pid: pid(), reference: reference()}

Link to this section Functions

Link to this function

add_error(span, exception, stacktrace)

View Source
@spec add_error(t() | nil, Exception.t(), Exception.stacktrace()) :: t() | nil

Add an error to an Appsignal.Span by passing an exception from a rescue block, and a stack trace.

example

Example

span = Appsignal.Tracer.root_span()

try
  raise "Exception!"
rescue
  exception ->
    Appsignal.Span.add_error(span, exception, __STACKTRACE__)
end
Link to this function

add_error(span, kind, reason, stacktrace)

View Source
@spec add_error(t() | nil, Exception.kind(), any(), Exception.stacktrace()) ::
  t() | nil

Add an error to an Appsignal.Span by passing a kind and reason from a catch block, and a stack trace.

example

Example

span = Appsignal.Tracer.root_span()

try
  raise "Exception!"
catch
  kind, reason ->
    Appsignal.Span.add_error(span, kind, reason, __STACKTRACE__)
end
@spec close(t() | nil) :: t() | nil

Close an Appsignal.Span.

example

Example

Appsignal.Tracer.root_span()
|> Span.close()
@spec close(t() | nil, integer()) :: t() | nil

Close an Appsignal.Span with an explicit end time.

example

Example

Appsignal.Tracer.root_span()
|> Span.close(span, :os.system_time())
@spec create_child(t() | nil, pid()) :: t() | nil

Create a child Appsignal.Span.

example

Example

Appsignal.Tracer.root_span()
|> Appsignal.Span.create_child(self())
Link to this function

create_child(span, pid, start_time)

View Source
@spec create_child(t() | nil, pid(), integer() | nil) :: t() | nil

Create a child Appsignal.Span with an explicit start time.

example

Example

Appsignal.Tracer.root_span()
|> Appsignal.Span.create_child(self(), :os.system_time())
Link to this function

create_root(namespace, pid)

View Source
@spec create_root(String.t(), pid()) :: t() | nil

Create a root Appsignal.Span with a namespace and a pid.

For a description of namespaces, see set_namespace/2.

example

Example

Appsignal.Span.create_root("http_request", self())
Link to this function

create_root(namespace, pid, start_time)

View Source
@spec create_root(String.t(), pid(), integer() | nil) :: t() | nil

Create a root Appsignal.Span with a namespace, a pid and an explicit start time.

For a description of namespaces, see set_namespace/2.

example

Example

Appsignal.Span.create_root("http_request", self(), :os.system_time())
Link to this function

set_attribute(span, key, value)

View Source
@spec set_attribute(
  t() | nil,
  String.t(),
  String.t() | integer() | boolean() | float()
) :: t() | nil

Sets an Appsignal.Span attribute.

example

Example

Appsignal.Tracer.root_span()
|> Appsignal.Span.set_attribute("appsignal:category", "query.ecto")
@spec set_name(t() | nil, String.t()) :: t() | nil

Sets an Appsignal.Span's name.

example

Example

Appsignal.Tracer.root_span()
|> Appsignal.Span.set_name("PageController#index")
Link to this function

set_name_if_nil(span, name)

View Source
@spec set_name_if_nil(t() | nil, String.t()) :: t() | nil

Sets an Appsignal.Span's name if it was not set before.

example

Example

Appsignal.Tracer.root_span()
|> Appsignal.Span.set_name_if_nil("PageController#index")
Link to this function

set_namespace(span, namespace)

View Source
@spec set_namespace(t() | nil, String.t()) :: t() | nil

Sets an Appsignal.Span's namespace. The namespace is "http_request" or "background_job' to add the span to the "web" and "background" namespaces respectively. Passing another string creates a custom namespace to store the Appsignal.Span's samples in.

example

Example

Appsignal.Tracer.root_span()
|> Appsignal.Span.set_namespace("http_request")
Link to this function

set_sample_data(span, key, value)

View Source
@spec set_sample_data(t() | nil, String.t(), map()) :: t() | nil

Sets sample data for an Appsignal.Span.

example

Example

Appsignal.Tracer.root_span()
|> Appsignal.Span.set_sample_data("environment", %{"method" => "GET"})
Link to this function

set_sample_data_if_nil(span, key, value)

View Source
@spec set_sample_data_if_nil(t() | nil, String.t(), map()) :: t() | nil

Sets sample data for an Appsignal.Span, unless it has already been set.

example

Example

Appsignal.Tracer.root_span()
|> Appsignal.Span.set_sample_data_if_nil("environment", %{"method" => "GET"})
@spec set_sql(t() | nil, String.t()) :: t() | nil

Sets the "appsignal:body" attribute with an SQL query string.

example

Example

Appsignal.Tracer.root_span()
|> Appsignal.Span.set_sql("SELECT * FROM users")