@@ -58,6 +58,11 @@ defmodule Phoenix.Logger do
5858 * Metadata: `%{endpoint: atom, transport: atom, params: term, connect_info: map, vsn: binary, user_socket: atom, result: :ok | :error, serializer: atom, log: Logger.level | false}`
5959 * Disable logging: `use Phoenix.Socket, log: false` or `socket "/foo", MySocket, websocket: [log: false]` in your endpoint
6060
61+ * `[:phoenix, :socket_drain]` - dispatched by `Phoenix.Socket` when using the `:drainer` option
62+ * Measurement: `%{count: integer, total: integer, index: integer, rounds: integer}`
63+ * Metadata: `%{endpoint: atom, socket: atom, intervasl: integer, log: Logger.level | false}`
64+ * Disable logging: `use Phoenix.Socket, log: false` in your endpoint or pass `:log` option in the `:drainer` option
65+
6166 * `[:phoenix, :channel_joined]` - dispatched at the end of a channel join
6267 * Measurement: `%{duration: native_time}`
6368 * Metadata: `%{result: :ok | :error, params: term, socket: Phoenix.Socket.t}`
@@ -134,6 +139,7 @@ defmodule Phoenix.Logger do
134139 [ :phoenix , :router_dispatch , :start ] => & __MODULE__ . phoenix_router_dispatch_start / 4 ,
135140 [ :phoenix , :error_rendered ] => & __MODULE__ . phoenix_error_rendered / 4 ,
136141 [ :phoenix , :socket_connected ] => & __MODULE__ . phoenix_socket_connected / 4 ,
142+ [ :phoenix , :socket_drain ] => & __MODULE__ . phoenix_socket_drain / 4 ,
137143 [ :phoenix , :channel_joined ] => & __MODULE__ . phoenix_channel_joined / 4 ,
138144 [ :phoenix , :channel_handled_in ] => & __MODULE__ . phoenix_channel_handled_in / 4
139145 }
@@ -334,6 +340,22 @@ defmodule Phoenix.Logger do
334340 defp connect_result ( :ok ) , do: "CONNECTED TO "
335341 defp connect_result ( :error ) , do: "REFUSED CONNECTION TO "
336342
343+ @ doc false
344+ def phoenix_socket_drain ( _ , _ , % { log: false } , _ ) , do: :ok
345+
346+ def phoenix_socket_drain ( _ , % { count: count , total: total , index: index , rounds: rounds } , % { log: level } = meta , _ ) do
347+ Logger . log ( level , fn ->
348+ % { socket: socket , interval: interval } = meta
349+
350+ [
351+ "DRAINING #{ count } of #{ total } total connection(s) for socket " ,
352+ inspect ( socket ) ,
353+ " every #{ interval } ms - " ,
354+ "round #{ index } of #{ rounds } "
355+ ]
356+ end )
357+ end
358+
337359 ## Event: [:phoenix, :channel_joined]
338360
339361 @ doc false
0 commit comments