@@ -71,11 +71,11 @@ defmodule ExUnit.CaptureServer do
71
71
refs = Map . put ( config . log_captures , ref , true )
72
72
73
73
{ level , opts } = Keyword . pop ( opts , :level )
74
- true = :ets . insert ( @ ets , { ref , string_io , level || :all } )
74
+ { formatter_mod , formatter_config } = Logger . default_formatter ( opts )
75
+ true = :ets . insert ( @ ets , { ref , string_io , level || :all , formatter_mod , formatter_config } )
75
76
76
77
if map_size ( refs ) == 1 do
77
- formatter = Logger . default_formatter ( opts )
78
- :ok = :logger . add_handler ( @ name , __MODULE__ , % { formatter: formatter } )
78
+ :ok = :logger . add_handler ( @ name , __MODULE__ , % { } )
79
79
80
80
status =
81
81
with { :ok , config } <- :logger . get_handler_config ( :default ) ,
@@ -226,12 +226,10 @@ defmodule ExUnit.CaptureServer do
226
226
227
227
## :logger handler callback.
228
228
229
- def log ( event , % { } = config ) do
230
- % { formatter: { formatter_mod , formatter_config } } = config
231
- chardata = formatter_mod . format ( event , formatter_config )
232
-
233
- for [ string_io , level ] <- :ets . match ( @ ets , { :_ , :"$1" , :"$2" } ) ,
229
+ def log ( event , _config ) do
230
+ for { _ref , string_io , level , formatter_mod , formatter_config } <- :ets . tab2list ( @ ets ) ,
234
231
:logger . compare_levels ( event . level , level ) in [ :gt , :eq ] do
232
+ chardata = formatter_mod . format ( event , formatter_config )
235
233
# There is a race condition where the capture_log is removed
236
234
# but another process is attempting to log to string io device
237
235
# that no longer exists, so we wrap it in try/catch.
@@ -241,5 +239,7 @@ defmodule ExUnit.CaptureServer do
241
239
_ -> :ok
242
240
end
243
241
end
242
+
243
+ :ok
244
244
end
245
245
end
0 commit comments