Browse Source

Merge branch 'master' of https://github.com/MaximMinin/lager into intg

pull/277/head
Mark Allen 10 years ago
parent
commit
d06a8f3017
2 changed files with 20 additions and 5 deletions
  1. +6
    -5
      src/lager.erl
  2. +14
    -0
      src/lager_file_backend.erl

+ 6
- 5
src/lager.erl View File

@ -189,21 +189,22 @@ trace_file(File, Filter, Options) when is_list(Options) ->
trace_file(File, Filter, debug, Options).
trace_file(File, Filter, Level, Options) ->
case validate_trace_filters(Filter, Level, {lager_file_backend, File}) of
FileName = lager_util:expand_path(File),
case validate_trace_filters(Filter, Level, {lager_file_backend, FileName}) of
{Sink, {ok, Trace}} ->
Handlers = lager_config:global_get(handlers, []),
%% check if this file backend is already installed
Res = case lists:keyfind({lager_file_backend, File}, 1, Handlers) of
Res = case lists:keyfind({lager_file_backend, FileName}, 1, Handlers) of
false ->
%% install the handler
LogFileConfig =
lists:keystore(level, 1,
lists:keystore(file, 1,
Options,
{file, File}),
{file, FileName}),
{level, none}),
HandlerInfo =
lager_app:start_handler(Sink, {lager_file_backend, File},
lager_app:start_handler(Sink, {lager_file_backend, FileName},
LogFileConfig),
lager_config:global_set(handlers, [HandlerInfo|Handlers]),
{ok, installed};
@ -216,7 +217,7 @@ trace_file(File, Filter, Level, Options) ->
{ok, _} ->
%% XXX Double-check this logic for {ok, exists}
add_trace_to_loglevel_config(Trace, Sink),
{ok, {{lager_file_backend, File}, Filter, Level}};
{ok, {{lager_file_backend, FileName}, Filter, Level}};
{error, _} = E ->
E
end;

+ 14
- 0
src/lager_file_backend.erl View File

@ -708,6 +708,20 @@ filesystem_test_() ->
?assertMatch([_, _, "[error]", _, "Test message\n"], re:split(Bin3, " ", [{return, list}, {parts, 5}]))
end
},
{"tracing to a dedicated file should work even if root_log is set",
fun() ->
{ok, P} = file:get_cwd(),
file:delete(P ++ "/test_root_log/foo.log"),
application:set_env(lager, log_root, P++"/test_root_log"),
{ok, _} = lager:trace_file("foo.log", [{module, ?MODULE}]),
lager:error("Test message"),
%% not elegible for trace
lager:log(error, self(), "Test message"),
{ok, Bin3} = file:read_file(P++"/test_root_log/foo.log"),
application:unset_env(lager, log_root),
?assertMatch([_, _, "[error]", _, "Test message\n"], re:split(Bin3, " ", [{return, list}, {parts, 5}]))
end
},
{"tracing with options should work",
fun() ->
file:delete("foo.log"),

Loading…
Cancel
Save