|
|
@ -45,45 +45,40 @@ init([]) -> |
|
|
|
{lager_handler_watcher_sup, {lager_handler_watcher_sup, start_link, []}, |
|
|
|
permanent, 5000, supervisor, [lager_handler_watcher_sup]}], |
|
|
|
|
|
|
|
%% check if the crash log is enabled |
|
|
|
Crash = case application:get_env(lager, crash_log) of |
|
|
|
{ok, undefined} -> |
|
|
|
[]; |
|
|
|
{ok, false} -> |
|
|
|
[]; |
|
|
|
{ok, File} -> |
|
|
|
MaxBytes = case application:get_env(lager, crash_log_msg_size) of |
|
|
|
{ok, Val} when is_integer(Val) andalso Val > 0 -> Val; |
|
|
|
_ -> 65536 |
|
|
|
end, |
|
|
|
RotationSize = case application:get_env(lager, crash_log_size) of |
|
|
|
{ok, Val1} when is_integer(Val1) andalso Val1 >= 0 -> Val1; |
|
|
|
_ -> 0 |
|
|
|
end, |
|
|
|
RotationCount = case application:get_env(lager, crash_log_count) of |
|
|
|
{ok, Val2} when is_integer(Val2) andalso Val2 >=0 -> Val2; |
|
|
|
_ -> 0 |
|
|
|
end, |
|
|
|
RotationDate = case application:get_env(lager, crash_log_date) of |
|
|
|
{ok, Val3} -> |
|
|
|
case lager_util:parse_rotation_date_spec(Val3) of |
|
|
|
{ok, Spec} -> Spec; |
|
|
|
{error, _} when Val3 == "" -> undefined; %% blank is ok |
|
|
|
{error, _} -> |
|
|
|
error_logger:error_msg("Invalid date spec for " |
|
|
|
"crash log ~p~n", [Val3]), |
|
|
|
undefined |
|
|
|
end; |
|
|
|
_ -> undefined |
|
|
|
end, |
|
|
|
|
|
|
|
[{lager_crash_log, {lager_crash_log, start_link, [File, MaxBytes, |
|
|
|
RotationSize, RotationDate, RotationCount]}, |
|
|
|
permanent, 5000, worker, [lager_crash_log]}]; |
|
|
|
_ -> |
|
|
|
[] |
|
|
|
end, |
|
|
|
CrashLog = decide_crash_log(lager_app:get_env(lager, crash_log, false)), |
|
|
|
|
|
|
|
{ok, {{one_for_one, 10, 60}, |
|
|
|
Children ++ Crash |
|
|
|
}}. |
|
|
|
Children ++ CrashLog |
|
|
|
}}. |
|
|
|
|
|
|
|
validate_positive({ok, Val}, _Default) when is_integer(Val) andalso Val >= 0 -> |
|
|
|
Val; |
|
|
|
validate_positive(_Val, Default) -> |
|
|
|
Default. |
|
|
|
|
|
|
|
determine_rotation_date({ok, ""}) -> |
|
|
|
undefined; |
|
|
|
determine_rotation_date({ok, Val3}) -> |
|
|
|
case lager_util:parse_rotation_date_spec(Val3) of |
|
|
|
{ok, Spec} -> Spec; |
|
|
|
{error, _} -> |
|
|
|
error_logger:error_msg("Invalid date spec for " |
|
|
|
"crash log ~p~n", [Val3]), |
|
|
|
undefined |
|
|
|
end; |
|
|
|
determine_rotation_date(_) -> |
|
|
|
undefined. |
|
|
|
|
|
|
|
decide_crash_log(false) -> |
|
|
|
[]; |
|
|
|
decide_crash_log(File) -> |
|
|
|
MaxBytes = validate_positive(application:get_env(lager, crash_log_msg_size), 65536), |
|
|
|
RotationSize = validate_positive(application:get_env(lager, crash_log_size), 0), |
|
|
|
RotationCount = validate_positive(application:get_env(lager, crash_log_count), 0), |
|
|
|
|
|
|
|
RotationDate = determine_rotation_date(application:get_env(lager, crash_log_date)), |
|
|
|
|
|
|
|
|
|
|
|
[{lager_crash_log, {lager_crash_log, start_link, [File, MaxBytes, |
|
|
|
RotationSize, RotationDate, RotationCount]}, |
|
|
|
permanent, 5000, worker, [lager_crash_log]}]. |