Skip to content

Commit ace9faf

Browse files
Merge pull request #334 from KineticCafe/configurable-log-level
Allow configuration of Sentry log level
2 parents e1e158d + f4e4298 commit ace9faf

File tree

5 files changed

+27
-5
lines changed

5 files changed

+27
-5
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,3 @@
33
erl_crash.dump
44
*.ez
55
/doc
6-
.DS_Store

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ For optional settings check the [docs](https://hexdocs.pm/sentry/readme.html).
118118
| `source_code_path_pattern` | False | `"**/*.ex"` | |
119119
| `filter` | False | | Module where the filter rules are defined (see [Filtering Exceptions](https://hexdocs.pm/sentry/Sentry.html#module-filtering-exceptions)) |
120120
| `json_library` | False | `Jason` | |
121+
| `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. |
121122

122123
An example production config might look like this:
123124

lib/sentry.ex

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ defmodule Sentry do
104104
]
105105

106106
validate_json_config!()
107+
validate_log_level_config!()
107108

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

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

154155
:ignored
155156
end
@@ -192,4 +193,14 @@ defmodule Sentry do
192193
end
193194
end
194195
end
196+
197+
defp validate_log_level_config!() do
198+
value = Config.log_level()
199+
200+
if value in Config.permitted_log_level_values() do
201+
:ok
202+
else
203+
raise ArgumentError.exception("#{inspect(value)} is not a valid :log_level configuration")
204+
end
205+
end
195206
end

lib/sentry/client.ex

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -336,9 +336,12 @@ defmodule Sentry.Client do
336336
end
337337

338338
defp log_api_error(body) do
339-
Logger.warn(fn ->
340-
["Failed to send Sentry event.", ?\n, body]
341-
end)
339+
Logger.log(
340+
Config.log_level(),
341+
fn ->
342+
["Failed to send Sentry event.", ?\n, body]
343+
end
344+
)
342345
end
343346

344347
defp sleep(1), do: :timer.sleep(2000)

lib/sentry/config.ex

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ defmodule Sentry.Config do
1414
@default_context_lines 3
1515
@default_sample_rate 1.0
1616

17+
@permitted_log_level_values ~w(debug info warn error)a
18+
1719
def validate_config! do
1820
end
1921

@@ -127,6 +129,12 @@ defmodule Sentry.Config do
127129
get_config(:json_library, default: Jason, check_dsn: false)
128130
end
129131

132+
def log_level do
133+
get_config(:log_level, default: :warn, check_dsn: false)
134+
end
135+
136+
def permitted_log_level_values, do: @permitted_log_level_values
137+
130138
defp get_config(key, opts \\ []) when is_atom(key) do
131139
default = Keyword.get(opts, :default)
132140
check_dsn = Keyword.get(opts, :check_dsn, true)

0 commit comments

Comments
 (0)