Skip to content

Commit b12309a

Browse files
committed
move log comparison to js
1 parent a8cbed4 commit b12309a

File tree

3 files changed

+25
-45
lines changed

3 files changed

+25
-45
lines changed

lib/phoenix_live_reload/channel.ex

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,12 @@ defmodule Phoenix.LiveReloader.Channel do
6464
end
6565

6666
def handle_info({@logs, %{level: level, msg: msg, file: file, line: line}}, socket) do
67-
if is_log_min_log_level?(socket, level) do
68-
push(socket, "log", %{
69-
level: to_string(level),
70-
msg: msg,
71-
file: file,
72-
line: line
73-
})
74-
end
67+
push(socket, "log", %{
68+
level: to_string(level),
69+
msg: msg,
70+
file: file,
71+
line: line
72+
})
7573

7674
{:noreply, socket}
7775
end
@@ -124,13 +122,6 @@ defmodule Phoenix.LiveReloader.Channel do
124122
socket.endpoint.config(:live_reload)[:web_console_logger] == true
125123
end
126124

127-
defp is_log_min_log_level?(socket, log_level) do
128-
socket.endpoint.config(:live_reload)[:web_console_logger_min_log_level] |> case do
129-
nil -> true
130-
level -> Logger.compare_levels(log_level, level) != :lt
131-
end
132-
end
133-
134125
defp join_info do
135126
if url = System.get_env("PLUG_EDITOR") do
136127
%{editor_url: url}

priv/static/phoenix_live_reload.js

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,17 @@ let pageStrategy = channel => {
4242
window[targetWindow].location.reload()
4343
}
4444

45+
const elixirLogLevels = [
46+
"emergency",
47+
"alert",
48+
"critical",
49+
"error",
50+
"warning",
51+
"notice" ,
52+
"info",
53+
"debug"
54+
]
55+
4556
let reloadStrategies = {
4657
css: reloadPageOnCssChanges ? pageStrategy : cssStrategy,
4758
page: pageStrategy
@@ -51,6 +62,7 @@ class LiveReloader {
5162
constructor(socket){
5263
this.socket = socket
5364
this.logsEnabled = false
65+
this.minLogLevel = "debug"
5466
this.enabledOnce = false
5567
this.editorURL = null
5668
}
@@ -70,7 +82,7 @@ class LiveReloader {
7082
let reloadStrategy = reloadStrategies[msg.asset_type] || reloadStrategies.page
7183
setTimeout(() => reloadStrategy(this.channel), interval)
7284
})
73-
this.channel.on("log", ({msg, level}) => this.logsEnabled && this.log(level, msg))
85+
this.channel.on("log", ({msg, level}) => this.logsEnabled && this.isMinLogLevel(level) && this.log(level, msg))
7486
this.channel.join().receive("ok", ({editor_url}) => {
7587
this.editorURL = editor_url
7688
})
@@ -85,6 +97,12 @@ class LiveReloader {
8597
enableServerLogs(){ this.logsEnabled = true }
8698
disableServerLogs(){ this.logsEnabled = false }
8799

100+
setMinLogLevel(level){ this.minLogLevel = level }
101+
102+
isMinLogLevel(level){
103+
return elixirLogLevels.indexOf(level) <= elixirLogLevels.indexOf(this.minLogLevel)
104+
}
105+
88106
openEditorAtCaller(targetNode){
89107
if(!this.editorURL){
90108
return console.error("phoenix_live_reload cannot openEditorAtCaller without configured PLUG_EDITOR")

test/channel_test.exs

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -152,33 +152,4 @@ defmodule Phoenix.LiveReloader.ChannelTest do
152152

153153
assert info == %{editor_url: "vscode://file/__FILE__:__LINE__"}
154154
end
155-
156-
test "send valid logs with a minimum log level" do
157-
System.delete_env("PLUG_EDITOR")
158-
159-
update_live_reload_env(@endpoint, fn conf ->
160-
Keyword.merge(conf, web_console_logger: true, web_console_logger_min_log_level: :error)
161-
end)
162-
163-
{:ok, info, _socket} =
164-
LiveReloader.Socket |> socket() |> subscribe_and_join(Channel, "phoenix:live_reload", %{})
165-
166-
assert info == %{}
167-
Logger.info("hello")
168-
169-
refute_receive _
170-
171-
update_live_reload_env(@endpoint, fn conf ->
172-
Keyword.drop(conf, [:web_console_logger_min_log_level])
173-
end)
174-
175-
{:ok, info, _socket} =
176-
LiveReloader.Socket |> socket() |> subscribe_and_join(Channel, "phoenix:live_reload", %{})
177-
178-
assert info == %{}
179-
180-
Logger.info("hello again")
181-
assert_receive %Phoenix.Socket.Message{event: "log", payload: %{msg: msg, level: "info"}}
182-
assert msg =~ "hello again"
183-
end
184155
end

0 commit comments

Comments
 (0)