Skip to content

Commit 1dd7992

Browse files
authored
Update Tesla.Middleware.Logger for Elixir 1.11+ (#627)
Elixir 1.15 is now warning whenever the `:warn` level is used with the recommendation of using `:warning` instead. The `Logger` middleware uses `Logger.log/3`, so a compile-time warning would not be shown, only a runtime warning. This change adds `:warning` as a valid configuration option for Tesla log level and automatically translates `:warn` or `:warning` to the appropriate level (`:warn` for Elixir 1.10.x, `:warning` for Elixir 1.11.x or higher, as `Logger.warning/2` was introduced in 1.11.0).
1 parent 857d7da commit 1dd7992

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

lib/tesla/middleware/logger.ex

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ defmodule Tesla.Middleware.Logger do
109109
By default, the following log levels will be used:
110110
111111
- `:error` - for errors, 5xx and 4xx responses
112-
- `:warn` - for 3xx responses
112+
- `:warn` or `:warning` - for 3xx responses
113113
- `:info` - for 2xx responses
114114
115115
You can customize this setting by providing your own `log_level/1` function:
@@ -186,7 +186,13 @@ defmodule Tesla.Middleware.Logger do
186186

187187
@format Formatter.compile(@config[:format])
188188

189-
@type log_level :: :info | :warn | :error
189+
@type log_level :: :info | :warn | :warning | :error
190+
191+
if Version.compare(System.version(), "1.11.0") == :lt do
192+
@warning_level :warn
193+
else
194+
@warning_level :warning
195+
end
190196

191197
require Logger
192198

@@ -221,9 +227,13 @@ defmodule Tesla.Middleware.Logger do
221227
fun when is_function(fun) ->
222228
case fun.(env) do
223229
:default -> default_log_level(env)
230+
warning when warning in [:warn, :warning] -> @warning_level
224231
level -> level
225232
end
226233

234+
warning when warning in [:warn, :warning] ->
235+
@warning_level
236+
227237
atom when is_atom(atom) ->
228238
atom
229239
end
@@ -233,7 +243,7 @@ defmodule Tesla.Middleware.Logger do
233243
def default_log_level(env) do
234244
cond do
235245
env.status >= 400 -> :error
236-
env.status >= 300 -> :warn
246+
env.status >= 300 -> @warning_level
237247
true -> :info
238248
end
239249
end

0 commit comments

Comments
 (0)