diff --git a/src/lager_default_formatter.erl b/src/lager_default_formatter.erl index 7e11f9d..ad2b918 100644 --- a/src/lager_default_formatter.erl +++ b/src/lager_default_formatter.erl @@ -98,6 +98,10 @@ output(metadata, Msg) -> output({metadata, IntSep, FieldSep}, Msg) -> MD = lists:keysort(1, lager_msg:metadata(Msg)), string:join([io_lib:format("~s~s~p", [K, IntSep, V]) || {K, V} <- MD], FieldSep); +output({pterm, Key}, Msg) -> + output({pterm, Key, ""}, Msg); +output({pterm, Key, Default}, _Msg) -> + make_printable(persistent_term:get(Key, Default)); output(Prop,Msg) when is_atom(Prop) -> Metadata = lager_msg:metadata(Msg), make_printable(get_metadata(Prop,Metadata,<<"Undefined">>)); @@ -147,6 +151,10 @@ output(metadata, Msg, _Width) -> output({metadata, IntSep, FieldSep}, Msg, _Width) -> MD = lists:keysort(1, lager_msg:metadata(Msg)), [string:join([io_lib:format("~s~s~p", [K, IntSep, V]) || {K, V} <- MD], FieldSep)]; +output({pterm, Key}, Msg, Width) -> + output({pterm, Key, ""}, Msg, Width); +output({pterm, Key, Default}, _Msg, _Width) -> + make_printable(persistent_term:get(Key, Default)); output(Prop, Msg, Width) when is_atom(Prop) -> Metadata = lager_msg:metadata(Msg), @@ -505,6 +513,29 @@ basic_test_() -> []), [severity_upper, " Simplist Format"]))) }, + {"pterm presence test", + ?_assertEqual(<<"Pterm is: something">>, + begin + persistent_term:put(thing, something), + Ret = iolist_to_binary(format(lager_msg:new("Message", + Now, + emergency, + [{pid, self()}], + []), + ["Pterm is: ", {pterm, thing}])), + persistent_term:erase(thing), + Ret + end) + }, + {"pterm absence test", + ?_assertEqual(<<"Pterm is: nothing">>, + iolist_to_binary(format(lager_msg:new("Message", + Now, + emergency, + [{pid, self()}], + []), + ["Pterm is: ", {pterm, thing, "nothing"}]))) + }, {"node formatting basic", begin [N, "foo"] = format(lager_msg:new("Message",