Переглянути джерело

Make sink name construction common & test

Based on code review comments put this function into util.
Added a couple simple unit tests for sanity checking purposes.
pull/270/head
Mark Allen 10 роки тому
джерело
коміт
20edd1519a
3 змінених файлів з 18 додано та 18 видалено
  1. +1
    -8
      src/lager_app.erl
  2. +2
    -9
      src/lager_transform.erl
  3. +15
    -1
      src/lager_util.erl

+ 1
- 8
src/lager_app.erl Переглянути файл

@ -164,16 +164,9 @@ wrap_proplist_value(undefined) ->
wrap_proplist_value(Value) -> wrap_proplist_value(Value) ->
{ok, Value}. {ok, Value}.
%% The default sink has always been lager_event. Using 'lager_lager_event' is likely to break
%% historical code and lots of tests.
make_internal_sink_name(lager) -> ?DEFAULT_SINK;
make_internal_sink_name(Sink) ->
list_to_atom(atom_to_list(Sink) ++ "_lager_event").
configure_sink(Sink, SinkDef) -> configure_sink(Sink, SinkDef) ->
lager_config:new_sink(Sink), lager_config:new_sink(Sink),
ChildId = make_internal_sink_name(Sink),
ChildId = lager_util:make_internal_sink_name(Sink),
_ = supervisor:start_child(lager_sup, _ = supervisor:start_child(lager_sup,
{ChildId, {ChildId,
{gen_event, start_link, {gen_event, start_link,

+ 2
- 9
src/lager_transform.erl Переглянути файл

@ -79,13 +79,6 @@ walk_body(Acc, []) ->
walk_body(Acc, [H|T]) -> walk_body(Acc, [H|T]) ->
walk_body([transform_statement(H, get(sinks))|Acc], T). walk_body([transform_statement(H, get(sinks))|Acc], T).
%% 'lager' is special cased because its sink has *always* been named 'lager_event'
make_internal_sink_name(lager) -> ?DEFAULT_SINK;
%% Everything else should be Sink++_lager_event
make_internal_sink_name(Sink) ->
list_to_atom(atom_to_list(Sink) ++ "_lager_event").
transform_statement({call, Line, {remote, _Line1, {atom, _Line2, Module}, transform_statement({call, Line, {remote, _Line1, {atom, _Line2, Module},
{atom, _Line3, Function}}, Arguments0} = Stmt, {atom, _Line3, Function}}, Arguments0} = Stmt,
Sinks) -> Sinks) ->
@ -93,12 +86,12 @@ transform_statement({call, Line, {remote, _Line1, {atom, _Line2, Module},
true -> true ->
case lists:member(Function, ?LEVELS) of case lists:member(Function, ?LEVELS) of
true -> true ->
SinkName = make_internal_sink_name(Module),
SinkName = lager_util:make_internal_sink_name(Module),
do_transform(Line, SinkName, Function, Arguments0); do_transform(Line, SinkName, Function, Arguments0);
false -> false ->
case lists:keyfind(Function, 1, ?LEVELS_UNSAFE) of case lists:keyfind(Function, 1, ?LEVELS_UNSAFE) of
{Function, Severity} -> {Function, Severity} ->
SinkName = make_internal_sink_name(Module),
SinkName = lager_util:make_internal_sink_name(Module),
do_transform(Line, SinkName, Severity, Arguments0, unsafe); do_transform(Line, SinkName, Severity, Arguments0, unsafe);
false -> false ->
Stmt Stmt

+ 15
- 1
src/lager_util.erl Переглянути файл

@ -23,7 +23,7 @@
open_logfile/2, ensure_logfile/4, rotate_logfile/2, format_time/0, format_time/1, open_logfile/2, ensure_logfile/4, rotate_logfile/2, format_time/0, format_time/1,
localtime_ms/0, localtime_ms/1, maybe_utc/1, parse_rotation_date_spec/1, localtime_ms/0, localtime_ms/1, maybe_utc/1, parse_rotation_date_spec/1,
calculate_next_rotation/1, validate_trace/1, check_traces/4, is_loggable/3, calculate_next_rotation/1, validate_trace/1, check_traces/4, is_loggable/3,
trace_filter/1, trace_filter/2, expand_path/1, check_hwm/1]).
trace_filter/1, trace_filter/2, expand_path/1, check_hwm/1, make_internal_sink_name/1]).
-ifdef(TEST). -ifdef(TEST).
-include_lib("eunit/include/eunit.hrl"). -include_lib("eunit/include/eunit.hrl").
@ -524,6 +524,14 @@ discard_messages(Second, Count) ->
Count Count
end. end.
%% @private Build an atom for the gen_event process based on a sink name.
%% For historical reasons, the default gen_event process for lager itself is named
%% `lager_event'. For all other sinks, it is SinkName++`_lager_event'
make_internal_sink_name(lager) ->
?DEFAULT_SINK;
make_internal_sink_name(Sink) ->
list_to_atom(atom_to_list(Sink) ++ "_lager_event").
-ifdef(TEST). -ifdef(TEST).
parse_test() -> parse_test() ->
@ -781,4 +789,10 @@ expand_path_test() ->
end, end,
ok. ok.
sink_name_test_() ->
[
?_assertEqual(lager_event, make_internal_sink_name(lager)),
?_assertEqual(audit_lager_event, make_internal_sink_name(audit))
].
-endif. -endif.

Завантаження…
Відмінити
Зберегти