defmodule LoggerSentry.Fingerprint.CodeLocation do
@moduledoc """
Default fingerprints from code location.
"""
def fingerprints(metadata, _msg) do
file = Keyword.get(metadata, :file)
line = Keyword.get(metadata, :line)
if file && line do
%{
application: Keyword.get(metadata, :application),
module: Keyword.get(metadata, :module),
function: Keyword.get(metadata, :function),
file: file,
line: line
}
|> Enum.reject(fn {_, v} -> is_nil(v) end)
|> Enum.map(fn {k, v} ->
"#{k}:#{v}"
end)
else
case Keyword.get(metadata, :crash_reason) do
{err, stacktrace} -> ["error:#{Exception.format(:error, err, stacktrace)}"]
_ -> []
end
end
rescue
_ ->
[]
end
# __end_of_module__
end