diff --git a/src/lager_app.erl b/src/lager_app.erl index b76da53..772b356 100644 --- a/src/lager_app.erl +++ b/src/lager_app.erl @@ -98,7 +98,7 @@ start_handler(Sink, Module, Config) -> [Sink, Module, Config]), {Module, Watcher, Sink}. -check_handler_config({lager_file_backend, F}, Config) when is_list(Config) -> +check_handler_config({lager_file_backend, F}, Config) when is_list(Config); is_tuple(Config) -> Fs = case get(?FILENAMES) of undefined -> ordsets:new(); X -> X @@ -131,9 +131,9 @@ interpret_hwm(HWM) -> maybe_install_sink_killer(_Sink, undefined, _ReinstallTimer) -> ok; maybe_install_sink_killer(Sink, HWM, undefined) -> maybe_install_sink_killer(Sink, HWM, 5000); -maybe_install_sink_killer(Sink, HWM, ReinstallTimer) when is_integer(HWM) andalso is_integer(ReinstallTimer) +maybe_install_sink_killer(Sink, HWM, ReinstallTimer) when is_integer(HWM) andalso is_integer(ReinstallTimer) andalso HWM >= 0 andalso ReinstallTimer >= 0 -> - _ = supervisor:start_child(lager_handler_watcher_sup, [Sink, lager_manager_killer, + _ = supervisor:start_child(lager_handler_watcher_sup, [Sink, lager_manager_killer, [HWM, ReinstallTimer]]); maybe_install_sink_killer(_Sink, HWM, ReinstallTimer) -> error_logger:error_msg("Invalid value for 'killer_hwm': ~p or 'killer_reinstall_after': ~p", [HWM, ReinstallTimer]), @@ -188,7 +188,7 @@ configure_sink(Sink, SinkDef) -> determine_async_behavior(Sink, proplists:get_value(async_threshold, SinkDef), proplists:get_value(async_threshold_window, SinkDef) ), - _ = maybe_install_sink_killer(Sink, proplists:get_value(killer_hwm, SinkDef), + _ = maybe_install_sink_killer(Sink, proplists:get_value(killer_hwm, SinkDef), proplists:get_value(killer_reinstall_after, SinkDef)), start_handlers(Sink, proplists:get_value(handlers, SinkDef, [])), @@ -229,7 +229,7 @@ boot() -> get_env(lager, async_threshold), get_env(lager, async_threshold_window)), - _ = maybe_install_sink_killer(?DEFAULT_SINK, get_env(lager, killer_hwm), + _ = maybe_install_sink_killer(?DEFAULT_SINK, get_env(lager, killer_hwm), get_env(lager, killer_reinstall_after)), start_handlers(?DEFAULT_SINK, @@ -387,6 +387,13 @@ check_handler_config_test_() -> {format, json}, {json_encoder, jiffy}}], BadToo = [{fail, {fail}}], + OldSchoolLagerGood = expand_handlers([{lager_console_backend,info}, + {lager_file_backend, [ + {"./log/error.log",error,10485760,"$D0",5}, + {"./log/console.log",info,10485760,"$D0",5}, + {"./log/debug.log",debug,10485760,"$D0",5} + ]}]), + NewConfigMissingList = expand_handlers([{foo_backend, {file, "same_file.log"}}]), [ {"lager_file_backend_good", ?_assertEqual([ok, ok, ok], [ check_handler_config(M,C) || {M,C} <- Good ]) @@ -399,6 +406,12 @@ check_handler_config_test_() -> }, {"Invalid config dies", ?_assertThrow({error, {bad_config, _}}, start_handlers(foo, BadToo)) + }, + {"Old Lager config works", + ?_assertEqual([ok, ok, ok, ok], [ check_handler_config(M, C) || {M, C} <- OldSchoolLagerGood]) + }, + {"New Config missing its list should fail", + ?_assertThrow({error, {bad_config, foo_backend}}, [ check_handler_config(M, C) || {M, C} <- NewConfigMissingList]) } ]. -endif.