Packages
sentry
9.0.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.
"""
@impl true
def run(args) when is_list(args) do
unless "--no-compile" in args do
Mix.Task.run("compile", args)
end
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
included_environments =
case Application.fetch_env(:sentry, :included_environments) do
{:ok, envs} when is_list(envs) or envs == :all ->
envs
:error ->
Mix.raise("""
The :included_environments application configuration option is not configured for the \
:sentry application.
""")
end
print_environment_info(Sentry.Transport.get_dsn(), included_environments)
env_name = to_string(Config.environment_name())
if included_environments == :all or env_name in included_environments do
send_event()
else
Mix.shell().info([
:yellow,
"#{inspect(env_name)} is not in #{inspect(included_environments)} so no test event will be sent"
])
end
end
defp print_environment_info({endpoint, public_key, secret_key}, included_environments) do
Mix.shell().info("Client configuration:")
Mix.shell().info("server: #{endpoint}")
Mix.shell().info("public_key: #{public_key}")
Mix.shell().info("secret_key: #{secret_key}")
Mix.shell().info("included_environments: #{inspect(included_environments)}")
Mix.shell().info("current environment_name: #{inspect(to_string(Config.environment_name()))}")
Mix.shell().info("hackney_opts: #{inspect(Config.hackney_opts())}\n")
end
defp send_event do
Mix.shell().info("Sending test event...")
exception = %RuntimeError{message: "Testing sending Sentry event"}
{:current_stacktrace, stacktrace} = Process.info(self(), :current_stacktrace)
case Sentry.capture_exception(exception, result: :sync, stacktrace: stacktrace) 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