Skip to content

Commit 14aa482

Browse files
committed
Add kind and top level message to DataDog formatter
1 parent c0bcd29 commit 14aa482

File tree

2 files changed

+25
-5
lines changed

2 files changed

+25
-5
lines changed

lib/logger_json/formatters/datadog.ex

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,24 +116,42 @@ defmodule LoggerJSON.Formatters.Datadog do
116116
end
117117

118118
@doc false
119-
def format_crash_reason(binary, {%{} = _exception, stacktrace}, _meta) do
119+
def format_crash_reason(binary, {%struct{} = _exception, stacktrace}, _meta) do
120+
kind =
121+
struct
122+
|> Module.split()
123+
|> List.last()
124+
125+
message = IO.chardata_to_string(binary)
126+
120127
%{
128+
message: message,
121129
error: %{
122-
message: IO.chardata_to_string(binary),
130+
kind: kind,
131+
message: message,
123132
stack: Exception.format_stacktrace(stacktrace)
124133
}
125134
}
126135
end
127136

128137
# https://docs.datadoghq.com/standard-attributes/?search=logger+error&product=log+management
129-
def format_crash_reason(binary, _other, _meta) do
138+
def format_crash_reason(binary, other, _meta) do
139+
message = IO.chardata_to_string(binary)
140+
130141
%{
142+
message: message,
131143
error: %{
132-
message: IO.chardata_to_string(binary)
144+
kind: format_crash_reason_kind(other),
145+
message: message
133146
}
134147
}
135148
end
136149

150+
defp format_crash_reason_kind({{:EXIT, _pid}, _reason}), do: "exit"
151+
defp format_crash_reason_kind({:exit, _reason}), do: "exit"
152+
defp format_crash_reason_kind({:throw, _reason}), do: "throw"
153+
defp format_crash_reason_kind(_), do: "other"
154+
137155
defp syslog(level, meta, :system) do
138156
{:ok, hostname} = :inet.gethostname()
139157

test/logger_json/formatters/datadog_test.exs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,9 @@ defmodule LoggerJSON.Formatters.DatadogTest do
284284
|> decode_or_print_error()
285285

286286
assert %{
287+
"message" => message,
287288
"error" => %{
289+
"kind" => "RuntimeError",
288290
"message" => message,
289291
"stack" => stacktrace
290292
},
@@ -354,7 +356,7 @@ defmodule LoggerJSON.Formatters.DatadogTest do
354356
end)
355357
|> decode_or_print_error()
356358

357-
assert log["error"] == %{"message" => "Hello"}
359+
assert log["error"] == %{"message" => "Hello", "kind" => "exit"}
358360

359361
assert log["network"] == %{"client" => %{"ip" => "127.0.0.1"}}
360362

0 commit comments

Comments
 (0)