Skip to content

Commit 4d900bc

Browse files
Merge pull request #55 from martosaur/am-special-treatment-to-file
2 parents 0213822 + 040404a commit 4d900bc

2 files changed

Lines changed: 32 additions & 1 deletion

File tree

lib/posthog/handler.ex

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ defmodule PostHog.Handler do
5757
end
5858
end)
5959
|> Map.drop(["$exception_list"])
60-
|> LoggerJSON.Formatter.RedactorEncoder.encode([])
60+
|> maybe_update_file_key()
6161

6262
Context.get(config.supervisor_name, "$exception")
6363
|> enrich_context(log_event)
@@ -160,4 +160,12 @@ defmodule PostHog.Handler do
160160
end
161161

162162
defp enrich_context(context, _log_event), do: context
163+
164+
defp maybe_update_file_key(%{file: chardata} = metadata) when is_list(chardata) do
165+
Map.update!(metadata, :file, &IO.chardata_to_string/1)
166+
rescue
167+
_ -> metadata
168+
end
169+
170+
defp maybe_update_file_key(metadata), do: metadata
163171
end

test/posthog/handler_test.exs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -950,6 +950,29 @@ defmodule PostHog.HandlerTest do
950950
refute Map.has_key?(properties, :shouldnt)
951951
end
952952

953+
@tag config: [metadata: :all]
954+
test "updates file metadata to be a string", %{
955+
handler_ref: ref,
956+
config: %{supervisor_name: supervisor_name}
957+
} do
958+
Logger.error("Error with default metadata")
959+
LoggerHandlerKit.Assert.assert_logged(ref)
960+
961+
assert [%{properties: %{file: file}}] = all_captured(supervisor_name)
962+
assert is_binary(file)
963+
end
964+
965+
@tag config: [metadata: :all]
966+
test "noop if file is non chardata", %{
967+
handler_ref: ref,
968+
config: %{supervisor_name: supervisor_name}
969+
} do
970+
Logger.error("Error with default metadata", file: 123)
971+
LoggerHandlerKit.Assert.assert_logged(ref)
972+
973+
assert [%{properties: %{file: 123}}] = all_captured(supervisor_name)
974+
end
975+
953976
@tag config: [metadata: [:extra]]
954977
test "ensures metadata is serializable", %{
955978
handler_ref: ref,

0 commit comments

Comments
 (0)