瀏覽代碼

Avoid persistent_term for OTP < 21

pull/530/head
Mark Allen 4 年之前
父節點
當前提交
1101906090
共有 1 個檔案被更改,包括 33 行新增14 行删除
  1. +33
    -14
      src/lager_default_formatter.erl

+ 33
- 14
src/lager_default_formatter.erl 查看文件

@ -101,7 +101,7 @@ output({metadata, IntSep, FieldSep}, Msg) ->
output({pterm, Key}, Msg) ->
output({pterm, Key, ""}, Msg);
output({pterm, Key, Default}, _Msg) ->
make_printable( persistent_term:get(Key, Default));
make_printable(maybe_get_persistent_term(Key, Default));
output(Prop,Msg) when is_atom(Prop) ->
Metadata = lager_msg:metadata(Msg),
make_printable(get_metadata(Prop,Metadata,<<"Undefined">>));
@ -154,7 +154,7 @@ output({metadata, IntSep, FieldSep}, Msg, _Width) ->
output({pterm, Key}, Msg, Width) ->
output({pterm, Key, ""}, Msg, Width);
output({pterm, Key, Default}, _Msg, _Width) ->
make_printable( persistent_term:get(Key, Default));
make_printable(maybe_get_persistent_term(Key, Default));
output(Prop, Msg, Width) when is_atom(Prop) ->
Metadata = lager_msg:metadata(Msg),
@ -193,6 +193,20 @@ make_printable(A,{Align,W}) when is_integer(W) ->
make_printable(A,_W) -> make_printable(A).
%% persistent term was introduced in OTP 21.2, so
%% if we're running on an older OTP, just return the
%% default value.
-ifdef(OTP_RELEASE).
maybe_get_persistent_term(Key, Default) ->
try
persistent_term:get(Key, Default)
catch
_:undef -> Default
end.
-else.
maybe_get_persistent_term(_Key, Default) -> Default.
-endif.
run_function(Function, Default) ->
try Function() of
Result ->
@ -514,18 +528,23 @@ 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)
%% skip test on OTP < 21
case list_to_integer(erlang:system_info(otp_release)) >= 21 of
true ->
?_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);
false -> ?_assert(true)
end
},
{"pterm absence test",
?_assertEqual(<<"Pterm is: nothing">>,

Loading…
取消
儲存