From b7da929f69f900c7f10255f82a39f562799bd087 Mon Sep 17 00:00:00 2001 From: MaximMinin Date: Wed, 15 Apr 2015 14:58:57 +0200 Subject: [PATCH 1/2] trace_file don't work, if env "log_root" is set. --- src/lager.erl | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/lager.erl b/src/lager.erl index cfae17d..f617b0a 100644 --- a/src/lager.erl +++ b/src/lager.erl @@ -150,24 +150,25 @@ trace_file(File, Filter, Options) when is_list(Options) -> trace_file(File, Filter, debug, Options). trace_file(File, Filter, Level, Options) -> - Trace0 = {Filter, Level, {lager_file_backend, File}}, + FileName = lager_util:expand_path(File), + Trace0 = {Filter, Level, {lager_file_backend, FileName}}, case lager_util:validate_trace(Trace0) of {ok, Trace} -> Handlers = gen_event:which_handlers(lager_event), %% check if this file backend is already installed - Res = case lists:member({lager_file_backend, File}, Handlers) of + Res = case lists:member({lager_file_backend, FileName}, Handlers) of false -> %% install the handler - LogFileConfig = lists:keystore(level, 1, lists:keystore(file, 1, Options, {file, File}), {level, none}), + LogFileConfig = lists:keystore(level, 1, lists:keystore(file, 1, Options, {file, FileName}), {level, none}), supervisor:start_child(lager_handler_watcher_sup, - [lager_event, {lager_file_backend, File}, LogFileConfig]); + [lager_event, {lager_file_backend, FileName}, LogFileConfig]); _ -> {ok, exists} end, case Res of {ok, _} -> add_trace_to_loglevel_config(Trace), - {ok, {{lager_file_backend, File}, Filter, Level}}; + {ok, {{lager_file_backend, FileName}, Filter, Level}}; {error, _} = E -> E end; From d66790f6124ef227e15e962fa89068d639032df4 Mon Sep 17 00:00:00 2001 From: MaximMinin Date: Thu, 23 Apr 2015 18:00:28 +0200 Subject: [PATCH 2/2] test for tracing to a dedicated file if root_log is set. --- src/lager_file_backend.erl | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/lager_file_backend.erl b/src/lager_file_backend.erl index f5ab2c9..87c69e2 100644 --- a/src/lager_file_backend.erl +++ b/src/lager_file_backend.erl @@ -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"),