@@ -71,11 +71,11 @@ defmodule ExUnit.CaptureServer do
7171 refs = Map . put ( config . log_captures , ref , true )
7272
7373 { 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 } )
7576
7677 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__ , % { } )
7979
8080 status =
8181 with { :ok , config } <- :logger . get_handler_config ( :default ) ,
@@ -226,12 +226,10 @@ defmodule ExUnit.CaptureServer do
226226
227227 ## :logger handler callback.
228228
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 ) ,
234231 :logger . compare_levels ( event . level , level ) in [ :gt , :eq ] do
232+ chardata = formatter_mod . format ( event , formatter_config )
235233 # There is a race condition where the capture_log is removed
236234 # but another process is attempting to log to string io device
237235 # that no longer exists, so we wrap it in try/catch.
@@ -241,5 +239,7 @@ defmodule ExUnit.CaptureServer do
241239 _ -> :ok
242240 end
243241 end
242+
243+ :ok
244244 end
245245end
0 commit comments