Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,3 @@
erl_crash.dump
*.ez
/doc
.DS_Store
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ For optional settings check the [docs](https://hexdocs.pm/sentry/readme.html).
| `source_code_path_pattern` | False | `"**/*.ex"` | |
| `filter` | False | | Module where the filter rules are defined (see [Filtering Exceptions](https://hexdocs.pm/sentry/Sentry.html#module-filtering-exceptions)) |
| `json_library` | False | `Jason` | |
| `log_level` | False | `:warn` | This sets the log level used when Sentry fails to send an event due to an invalid event or API error. |

An example production config might look like this:

Expand Down
13 changes: 12 additions & 1 deletion lib/sentry.ex
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ defmodule Sentry do
]

validate_json_config!()
validate_log_level_config!()

opts = [strategy: :one_for_one, name: Sentry.Supervisor]
Supervisor.start_link(children, opts)
Expand Down Expand Up @@ -149,7 +150,7 @@ defmodule Sentry do
def send_event(event, opts \\ [])

def send_event(%Event{message: nil, exception: nil}, _opts) do
Logger.warn("Sentry: unable to parse exception")
Logger.log(Config.log_level(), "Sentry: unable to parse exception")

:ignored
end
Expand Down Expand Up @@ -192,4 +193,14 @@ defmodule Sentry do
end
end
end

defp validate_log_level_config!() do
value = Config.log_level()

if value in Config.permitted_log_level_values() do
:ok
else
raise ArgumentError.exception("#{inspect(value)} is not a valid :log_level configuration")
end
end
end
9 changes: 6 additions & 3 deletions lib/sentry/client.ex
Original file line number Diff line number Diff line change
Expand Up @@ -336,9 +336,12 @@ defmodule Sentry.Client do
end

defp log_api_error(body) do
Logger.warn(fn ->
["Failed to send Sentry event.", ?\n, body]
end)
Logger.log(
Config.log_level(),
fn ->
["Failed to send Sentry event.", ?\n, body]
end
)
end

defp sleep(1), do: :timer.sleep(2000)
Expand Down
8 changes: 8 additions & 0 deletions lib/sentry/config.ex
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ defmodule Sentry.Config do
@default_context_lines 3
@default_sample_rate 1.0

@permitted_log_level_values ~w(debug info warn error)a

def validate_config! do
end

Expand Down Expand Up @@ -127,6 +129,12 @@ defmodule Sentry.Config do
get_config(:json_library, default: Jason, check_dsn: false)
end

def log_level do
get_config(:log_level, default: :warn, check_dsn: false)
end

def permitted_log_level_values, do: @permitted_log_level_values

defp get_config(key, opts \\ []) when is_atom(key) do
default = Keyword.get(opts, :default)
check_dsn = Keyword.get(opts, :check_dsn, true)
Expand Down