Packages
phoenix_live_reload
1.5.2
1.6.2
1.6.1
1.6.0
1.5.3
1.5.2
1.5.1
1.5.0
1.4.1
1.4.0
1.3.3
1.3.2
1.3.1
1.3.0
1.2.4
1.2.3
retired
1.2.2
1.2.1
1.2.0
1.2.0-rc.0
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.6.0
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
0.1.0
Provides live-reload functionality for Phoenix
Current section
Files
Jump to
Current section
Files
lib/phoenix_live_reload/web_console_logger.ex
defmodule Phoenix.LiveReloader.WebConsoleLogger do
@moduledoc false
@registry Phoenix.LiveReloader.WebConsoleLoggerRegistry
def attach_logger do
if function_exported?(Logger, :default_formatter, 0) do
:ok =
:logger.add_handler(__MODULE__, __MODULE__, %{
formatter: Logger.default_formatter(colors: [enabled: false])
})
end
end
def child_spec(_args) do
Registry.child_spec(name: @registry, keys: :duplicate)
end
def subscribe(prefix) do
{:ok, _} = Registry.register(@registry, :all, prefix)
:ok
end
# Erlang/OTP log handler
def log(%{meta: meta, level: level} = event, config) do
%{formatter: {formatter_mod, formatter_config}} = config
iodata = formatter_mod.format(event, formatter_config)
msg = IO.iodata_to_binary(iodata)
Registry.dispatch(@registry, :all, fn entries ->
event = %{level: level, msg: msg, file: meta[:file], line: meta[:line]}
for {pid, prefix} <- entries do
send(pid, {prefix, event})
end
end)
end
end