Master Hex.pm Version

YEET

Generates standard messages for Dead Letter Queue

Installation

If available in Hex, the package can be installed by adding yeet to your list of dependencies in mix.exs:

def deps do
[
{:yeet, "~> 1.0"}
]
end

Usage

Yeet.format_message(app_name, original_message, options \\ [])

Options:

Example Output Message Shape

%{
app: "forklift",
original_message: "{\"topic\": "\streaming-raw\", ...}",
stacktrace: " :erlang./(1, 0)",
exit_code: "%RuntimeError{message: \"Error\"}",
error: "FORKLIFT-PARSE"
reason: "Failed to parse message",
timestamp: #DateTime<2018-09-11 11:11:00Z>
}

Example generation snippets

Stacktrace

iex(1)> System.stacktrace
[
{:erl_anno, :anno_info, [{1, 18, 1}], [file: 'erl_anno.erl', line: 375]},
{IEx.Evaluator, :loop, 1, [file: 'lib/iex/evaluator.ex', line: 103]}
...
...
]
iex(2)> Process.info(self(), :current_stacktrace)
{:current_stacktrace,
[
{Process, :info, 2, [file: 'lib/process.ex', line: 767]},
{:erl_eval, :do_apply, 6, [file: 'erl_eval.erl', line: 680]},
{:elixir, :eval_forms, 4, [file: 'src/elixir.erl', line: 258]},
{IEx.Evaluator, :handle_eval, 5, [file: 'lib/iex/evaluator.ex', line: 257]},
{IEx.Evaluator, :do_eval, 3, [file: 'lib/iex/evaluator.ex', line: 237]},
{IEx.Evaluator, :eval, 3, [file: 'lib/iex/evaluator.ex', line: 215]},
{IEx.Evaluator, :loop, 1, [file: 'lib/iex/evaluator.ex', line: 103]}
]}

Exit Codes

exit_code =
try do
raise "Error"
rescue
e -> e
end

Timestamp

iex(3)> DateTime.from_iso8601("2018-09-11 11:11:00Z")
{:ok, #DateTime<2018-09-11 11:11:00Z>, 0}