Skip to content

Commit a17ce3e

Browse files
authored
fix: provide error_code metadata on RealtimeChannel.Logging (#1531)
1 parent b13bb21 commit a17ce3e

File tree

4 files changed

+25
-16
lines changed

4 files changed

+25
-16
lines changed

config/test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ config :logger,
4747
# Configures Elixir's Logger
4848
config :logger, :console,
4949
format: "$time $metadata[$level] $message\n",
50-
metadata: [:request_id, :project, :external_id, :application_name, :sub, :iss, :exp]
50+
metadata: [:error_code, :request_id, :project, :external_id, :application_name, :sub, :iss, :exp]
5151

5252
config :opentelemetry,
5353
span_processor: :simple,

lib/realtime_web/channels/realtime_channel/logging.ex

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ defmodule RealtimeWeb.RealtimeChannel.Logging do
2121
def log_error(socket, code, msg) do
2222
msg = build_msg(code, msg)
2323
emit_system_error(:error, code)
24-
log(socket, :error, msg)
24+
log(socket, :error, code, msg)
2525
{:error, %{reason: msg}}
2626
end
2727

@@ -32,7 +32,7 @@ defmodule RealtimeWeb.RealtimeChannel.Logging do
3232
{:error, %{reason: binary}}
3333
def log_warning(socket, code, msg) do
3434
msg = build_msg(code, msg)
35-
log(socket, :warning, msg)
35+
log(socket, :warning, code, msg)
3636
{:error, %{reason: msg}}
3737
end
3838

@@ -59,16 +59,16 @@ defmodule RealtimeWeb.RealtimeChannel.Logging do
5959
if code, do: "#{code}: #{msg}", else: msg
6060
end
6161

62-
defp log(%{assigns: %{tenant: tenant, access_token: access_token}}, level, msg) do
62+
defp log(%{assigns: %{tenant: tenant, access_token: access_token}}, level, code, msg) do
6363
Logger.metadata(external_id: tenant, project: tenant)
6464
if level in [:error, :warning], do: update_metadata_with_token_claims(access_token)
65-
Logger.log(level, msg)
65+
Logger.log(level, msg, error_code: code)
6666
end
6767

6868
defp maybe_log(%{assigns: %{log_level: log_level}} = socket, level, code, msg) do
6969
msg = build_msg(code, msg)
7070
emit_system_error(level, code)
71-
if Logger.compare_levels(log_level, level) != :gt, do: log(socket, level, msg)
71+
if Logger.compare_levels(log_level, level) != :gt, do: log(socket, level, code, msg)
7272
if level in [:error, :warning], do: {:error, %{reason: msg}}, else: :ok
7373
end
7474

mix.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ defmodule Realtime.MixProject do
44
def project do
55
[
66
app: :realtime,
7-
version: "2.47.3",
7+
version: "2.47.4",
88
elixir: "~> 1.17.3",
99
elixirc_paths: elixirc_paths(Mix.env()),
1010
start_permanent: Mix.env() == :prod,

test/realtime_web/channels/realtime_channel/logging_test.exs

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ defmodule RealtimeWeb.RealtimeChannel.LoggingTest do
3737
assert log =~ "sub=#{sub}"
3838
assert log =~ "exp=#{exp}"
3939
assert log =~ "iss=#{iss}"
40+
assert log =~ "error_code=TestError"
4041
end
4142
end
4243

@@ -57,6 +58,7 @@ defmodule RealtimeWeb.RealtimeChannel.LoggingTest do
5758
assert log =~ "sub=#{sub}"
5859
assert log =~ "exp=#{exp}"
5960
assert log =~ "iss=#{iss}"
61+
assert log =~ "error_code=TestWarning"
6062
end
6163
end
6264

@@ -67,10 +69,14 @@ defmodule RealtimeWeb.RealtimeChannel.LoggingTest do
6769
for log_level <- log_levels do
6870
socket = %{assigns: %{log_level: log_level, tenant: random_string(), access_token: "test_token"}}
6971

70-
assert capture_log(fn ->
71-
assert Logging.maybe_log_error(socket, "TestCode", "test message") ==
72-
{:error, %{reason: "TestCode: test message"}}
73-
end) =~ "TestCode: test message"
72+
log =
73+
capture_log(fn ->
74+
assert Logging.maybe_log_error(socket, "TestCode", "test message") ==
75+
{:error, %{reason: "TestCode: test message"}}
76+
end)
77+
78+
assert log =~ "TestCode: test message"
79+
assert log =~ "error_code=TestCode"
7480

7581
assert capture_log(fn ->
7682
assert Logging.maybe_log_error(socket, "TestCode", %{a: "b"}) ==
@@ -103,11 +109,14 @@ defmodule RealtimeWeb.RealtimeChannel.LoggingTest do
103109
for log_level <- log_levels do
104110
socket = %{assigns: %{log_level: log_level, tenant: random_string(), access_token: "test_token"}}
105111

106-
assert capture_log(fn ->
107-
assert Logging.maybe_log_warning(socket, "TestCode", "test message") ==
108-
{:error, %{reason: "TestCode: test message"}}
109-
end) =~
110-
"TestCode: test message"
112+
log =
113+
capture_log(fn ->
114+
assert Logging.maybe_log_warning(socket, "TestCode", "test message") ==
115+
{:error, %{reason: "TestCode: test message"}}
116+
end)
117+
118+
assert log =~ "TestCode: test message"
119+
assert log =~ "error_code=TestCode"
111120

112121
assert capture_log(fn ->
113122
assert Logging.maybe_log_warning(socket, "TestCode", %{a: "b"}) ==

0 commit comments

Comments
 (0)