Parcourir la source

Implement tracing for the file backend, with tests

pull/24/head
Andrew Thompson il y a 13 ans
Parent
révision
23cbc21964
1 fichiers modifiés avec 23 ajouts et 1 suppressions
  1. +23
    -1
      src/lager_file_backend.erl

+ 23
- 1
src/lager_file_backend.erl Voir le fichier

@ -35,6 +35,7 @@
-ifdef(TEST). -ifdef(TEST).
-include_lib("eunit/include/eunit.hrl"). -include_lib("eunit/include/eunit.hrl").
-include_lib("kernel/include/file.hrl"). -include_lib("kernel/include/file.hrl").
-compile([{parse_transform, lager_transform}]).
-endif. -endif.
-export([init/1, handle_call/2, handle_event/2, handle_info/2, terminate/2, -export([init/1, handle_call/2, handle_event/2, handle_info/2, terminate/2,
@ -84,6 +85,13 @@ handle_call(_Request, State) ->
{ok, ok, State}. {ok, ok, State}.
%% @private %% @private
handle_event({log, Dest, Level, {Date, Time}, Message}, #state{name=Name} = State) ->
case lists:member({lager_file_backend, Name}, Dest) of
true ->
{ok, write(State, Level, [Date, " ", Time, " ", Message, "\n"])};
false ->
{ok, State}
end;
handle_event({log, Level, {Date, Time}, Message}, #state{level=L} = State) when Level =< L-> handle_event({log, Level, {Date, Time}, Message}, #state{level=L} = State) when Level =< L->
NewState = write(State, Level, [Date, " ", Time, " ", Message, "\n"]), NewState = write(State, Level, [Date, " ", Time, " ", Message, "\n"]),
{ok, NewState}; {ok, NewState};
@ -329,8 +337,22 @@ filesystem_test_() ->
?assertEqual({error, bad_identifier}, lager:set_loglevel(lager_file_backend, "test2.log", warning)), ?assertEqual({error, bad_identifier}, lager:set_loglevel(lager_file_backend, "test2.log", warning)),
?assertEqual({error, missing_identifier}, lager:set_loglevel(lager_file_backend, warning)) ?assertEqual({error, missing_identifier}, lager:set_loglevel(lager_file_backend, warning))
end end
},
{"tracing should work",
fun() ->
gen_event:add_handler(lager_event, lager_file_backend,
{"test.log", critical}),
lager:error("Test message"),
?assertEqual({ok, <<>>}, file:read_file("test.log")),
{Level, _} = lager_mochiglobal:get(loglevel),
lager_mochiglobal:put(loglevel, {Level, [{[{module,
?MODULE}], ?DEBUG,
{lager_file_backend, "test.log"}}]}),
lager:error("Test message"),
{ok, Bin} = file:read_file("test.log"),
?assertMatch([_, _, "[error]", _, "Test message\n"], re:split(Bin, " ", [{return, list}, {parts, 5}]))
end
} }
] ]
}. }.

Chargement…
Annuler
Enregistrer