Browse Source

Ensure traces pointed to files work in config file

pull/336/head
Mark Allen 9 years ago
parent
commit
12fa1977bb
2 changed files with 61 additions and 4 deletions
  1. +6
    -4
      src/lager_app.erl
  2. +55
    -0
      src/lager_file_backend.erl

+ 6
- 4
src/lager_app.erl View File

@ -256,12 +256,14 @@ add_configured_traces() ->
TraceVal
end,
lists:foreach(fun({Handler, Filter, Level}) ->
{ok, _} = lager:trace(Handler, Filter, Level)
end,
Traces),
lists:foreach(fun start_configured_trace/1, Traces),
ok.
start_configured_trace({Handler, Filter}) ->
{ok, _} = lager:trace(Handler, Filter);
start_configured_trace({Handler, Filter, Level}) when is_atom(Level) ->
{ok, _} = lager:trace(Handler, Filter, Level).
maybe_make_handler_id(Mod, Config) ->
%% Allow the backend to generate a gen_event handler id, if it wants to.
%% We don't use erlang:function_exported here because that requires the module

+ 55
- 0
src/lager_file_backend.erl View File

@ -799,6 +799,61 @@ filesystem_test_() ->
]
}.
trace_files_test_() ->
{foreach,
fun() ->
file:delete("events.log"),
file:delete("test.log"),
file:delete("debug.log"),
error_logger:tty(false),
application:load(lager),
application:set_env(lager, handlers, [{lager_file_backend, [{file, "test.log"},
{level, error},
{formatter, lager_default_formatter},
{formatter_config, [message, "\n"]}]}]),
application:set_env(lager, traces, [
{ % get default level of debug
{lager_file_backend, "debug.log"}, [{module, ?MODULE}]
},
{ % Handler Filters Level
{lager_file_backend, "events.log"}, [{module, ?MODULE}], notice
}
]
),
application:set_env(lager, async_threshold, undefined),
lager:start()
end,
fun(_) ->
application:stop(lager),
file:delete("events.log"),
file:delete("test.log"),
file:delete("debug.log"),
error_logger:tty(true)
end,
[
{"a trace using file backend set up in configuration should work",
fun() ->
lager:error("trace test error message"),
lager:info("info message"),
%% not eligible for trace
lager:log(error, self(), "Not trace test message"),
{ok, BinInfo} = file:read_file("events.log"),
?assertMatch([_, _, "[error]", _, "trace test error message\n"],
re:split(BinInfo, " ", [{return, list}, {parts, 5}])),
?assert(filelib:is_regular("test.log")),
{ok, BinInfo2} = file:read_file("test.log"),
?assertMatch(["trace test error message", "Not trace test message\n"],
re:split(BinInfo2, "\n", [{return, list}, {parts, 2}])),
?assert(filelib:is_regular("debug.log")),
%% XXX Aughhhh, wish I could force this to flush somehow...
timer:sleep(1000),
{ok, BinInfo3} = file:read_file("debug.log"),
?assertEqual(2, length(re:split(BinInfo3, "\n", [{return, list}, trim])))
end
}
]
}.
formatting_test_() ->
{foreach,
fun() ->

Loading…
Cancel
Save