Packages
sentry
13.2.0
13.3.0
13.2.0
13.1.0
13.0.1
13.0.0
12.0.3
12.0.2
12.0.1
12.0.0
11.0.4
11.0.3
11.0.2
11.0.1
11.0.0
10.10.0
10.9.0
10.8.1
10.8.0
10.7.1
10.7.0
10.6.2
10.6.1
10.6.0
10.5.0
10.4.0
10.3.0
10.2.1
10.2.0
10.2.0-rc.2
10.2.0-rc.1
10.1.0
10.0.3
10.0.2
10.0.1
10.0.0
9.1.0
9.0.0
8.1.0
8.0.6
8.0.5
8.0.4
8.0.3
8.0.2
8.0.1
8.0.0
8.0.0-rc.2
8.0.0-rc.1
8.0.0-rc.0
retired
7.2.5
7.2.4
7.2.3
7.2.2
7.2.1
7.2.0
7.1.0
7.0.6
7.0.5
7.0.4
7.0.3
7.0.2
7.0.1
7.0.0
6.4.2
6.4.1
6.4.0
6.3.0
6.2.1
6.2.0
6.1.0
6.0.5
6.0.4
6.0.3
6.0.2
6.0.1
6.0.0
5.0.1
5.0.0
4.0.3
4.0.2
4.0.1
4.0.0
3.0.0
2.2.0
2.1.0
2.0.2
2.0.1
2.0.0
1.1.2
1.1.1
1.1.0
1.0.0
0.3.2
0.3.1
0.3.0
0.2.0
0.1.3
0.1.2
0.1.1
0.1.0
The Official Elixir client for Sentry
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/sentry.send_test_event.ex
defmodule Mix.Tasks.Sentry.SendTestEvent do
use Mix.Task
alias Sentry.Config
@shortdoc "Send a test event to Sentry to check your Sentry configuration"
@moduledoc """
Sends a test event to Sentry to check if your Sentry configuration is correct.
This task reports a `RuntimeError` exception like this one:
%RuntimeError{message: "Testing sending Sentry event"}
## Options
* `--no-compile` - does not compile, even if files require compilation.
* `--type` - `exception` or `message`. Defaults to `exception`. *Available since v10.1.0.*.
* `--no-stacktrace` - does not include a stacktrace in the reported event. *Available since
v10.1.0.*.
"""
@switches [
compile: :boolean,
stacktrace: :boolean,
type: :string
]
@impl true
def run(args) when is_list(args) do
{opts, args} = OptionParser.parse!(args, strict: @switches)
if Keyword.get(opts, :compile, true) do
Mix.Task.run("compile", args)
end
Mix.Task.run("loadconfig")
Mix.Task.run("app.config")
case Application.ensure_all_started(:sentry) do
{:ok, _apps} ->
:ok
{:error, reason} ->
Mix.raise("Failed to start the :sentry application:\n\n#{inspect(reason)}")
end
print_environment_info()
if Config.dsn() do
send_event(opts)
else
Mix.shell().info([
:yellow,
"Event not sent because the :dsn option is not set (or set to nil)"
])
end
end
defp print_environment_info do
Mix.shell().info("Client configuration:")
if dsn = Config.dsn() do
Mix.shell().info("server: #{dsn.endpoint_uri}")
Mix.shell().info("public_key: #{dsn.public_key}")
Mix.shell().info("secret_key: #{dsn.secret_key}")
end
Mix.shell().info("current environment_name: #{inspect(to_string(Config.environment_name()))}")
Mix.shell().info("Finch pool options: #{inspect(Config.finch_pool_opts(), pretty: true)}\n")
end
defp send_event(opts) do
stacktrace_opts =
if Keyword.get(opts, :stacktrace, true) do
{:current_stacktrace, stacktrace} = Process.info(self(), :current_stacktrace)
[stacktrace: stacktrace]
else
[]
end
Mix.shell().info("Sending test event...")
result =
case Keyword.get(opts, :type, "exception") do
"exception" ->
exception = %RuntimeError{message: "Testing sending Sentry event"}
Sentry.capture_exception(exception, [result: :sync] ++ stacktrace_opts)
"message" ->
Sentry.capture_message(
"Testing sending Sentry event",
[result: :sync] ++ stacktrace_opts
)
end
case result do
{:ok, id} ->
Mix.shell().info([:green, :bright, "Test event sent", :reset, "\nEvent ID: #{id}"])
{:error, reason} ->
Mix.raise("Error sending event:\n\n#{inspect(reason)}")
:excluded ->
Mix.shell().info("No test event was sent because the event was excluded by a filter")
:unsampled ->
Mix.shell().info("""
No test event was sent because the event was excluded according to the :sample_rate \
configuration option.
""")
end
end
end