diff --git a/rebar.config b/rebar.config index 77272c7..278df9c 100644 --- a/rebar.config +++ b/rebar.config @@ -40,9 +40,12 @@ {eunit_opts, [verbose]}. {eunit_compile_opts, [ + export_all, + nowarn_untyped_record, nowarn_export_all ]}. + {deps, [ {goldrush, ".*", {git, "git://github.com/DeadZen/goldrush.git", {tag, "0.1.8"}}} ]}. @@ -53,4 +56,3 @@ {cover_enabled, true}. {edoc_opts, [{stylesheet_file, "./priv/edoc.css"}]}. -{eunit_opts, [verbose]}. diff --git a/src/lager_app.erl b/src/lager_app.erl index 8f1464d..8efd26b 100644 --- a/src/lager_app.erl +++ b/src/lager_app.erl @@ -138,11 +138,10 @@ maybe_install_sink_killer(_Sink, HWM, ReinstallTimer) -> error_logger:error_msg("Invalid value for 'killer_hwm': ~p or 'killer_reinstall_after': ~p", [HWM, ReinstallTimer]), throw({error, bad_config}). -start_error_logger_handler({ok, false}, _HWM, _Whitelist) -> +-spec start_error_logger_handler(boolean(), pos_integer(), list()) -> list(). +start_error_logger_handler(false, _HWM, _Whitelist) -> []; -start_error_logger_handler(_, HWM, undefined) -> - start_error_logger_handler(ignore_me, HWM, {ok, []}); -start_error_logger_handler(_, HWM, {ok, WhiteList}) -> +start_error_logger_handler(true, HWM, WhiteList) -> GlStrategy = case application:get_env(lager, error_logger_groupleader_strategy) of undefined -> handle; @@ -200,13 +199,16 @@ configure_extra_sinks(Sinks) -> lists:foreach(fun({Sink, Proplist}) -> configure_sink(Sink, Proplist) end, Sinks). +-spec get_env(atom(), atom()) -> term(). get_env(Application, Key) -> get_env(Application, Key, undefined). + %% R15 doesn't know about application:get_env/3 +-spec get_env(atom(), atom(), term()) -> term(). get_env(Application, Key, Default) -> - get_env_default(application:get_env(Application, Key), - Default). + get_env_default(application:get_env(Application, Key), Default). +-spec get_env_default('undefined' | {'ok', term()}, term()) -> term(). get_env_default(undefined, Default) -> Default; get_env_default({ok, Value}, _Default) -> @@ -235,9 +237,9 @@ boot() -> lager:update_loglevel_config(?DEFAULT_SINK), SavedHandlers = start_error_logger_handler( - get_env(lager, error_logger_redirect), - interpret_hwm(get_env(lager, error_logger_hwm)), - get_env(lager, error_logger_whitelist) + get_env(lager, error_logger_redirect, true), + interpret_hwm(get_env(lager, error_logger_hwm, 0)), + get_env(lager, error_logger_whitelist, []) ), SavedHandlers. diff --git a/test/lager_app_tests.erl b/test/lager_app_tests.erl new file mode 100644 index 0000000..80fe985 --- /dev/null +++ b/test/lager_app_tests.erl @@ -0,0 +1,22 @@ +-module(lager_app_tests). + +-compile([{parse_transform, lager_transform}]). + +-include_lib("eunit/include/eunit.hrl"). + + +get_env_default_test() -> + ?assertEqual(<<"Some">>, lager_app:get_env_default(undefined, <<"Some">>)), + ?assertEqual(<<"Value">>, lager_app:get_env_default({ok, <<"Value">>}, <<"Some">>)), + ok. + +get_env_test() -> + application:set_env(myapp, mykey1, <<"Value">>), + + ?assertEqual(<<"Some">>, lager_app:get_env(myapp, mykey0, <<"Some">>)), + ?assertEqual(<<"Value">>, lager_app:get_env(myapp, mykey1, <<"Some">>)), + + ?assertEqual(undefined, lager_app:get_env(myapp, mykey0)), + ?assertEqual(<<"Value">>, lager_app:get_env(myapp, mykey1)), + ok. +