Current section
Files
Jump to
Current section
Files
src/z_syslog_app.erl
-module(z_syslog_app).
-behaviour(application).
-export([
start/0,
start/2,
stop/1
]).
%%====================================================================
%% API
%%====================================================================
start() ->
ensure_started(zotonic_mod_syslog).
start(_StartType, _StartArgs) ->
z_syslog_sup:start_link().
%%--------------------------------------------------------------------
stop(_State) ->
ok.
-spec ensure_started(atom()) -> ok | {error, term()}.
ensure_started(App) ->
case application:start(App) of
ok ->
ok;
{error, {not_started, Dep}} ->
case ensure_started(Dep) of
ok -> ensure_started(App);
{error, _} = Error -> Error
end;
{error, {already_started, App}} ->
ok;
{error, {Tag, Msg}} when is_list(Tag), is_list(Msg) ->
{error, lists:flatten(io_lib:format("~s: ~s", [Tag, Msg]))};
{error, {bad_return, {{M, F, Args}, Return}}} ->
A = string:join([io_lib:format("~p", [A])|| A <- Args], ", "),
{error, lists:flatten(
io_lib:format("~s failed to start due to a bad return value from call ~s:~s(~s):~n~p",
[App, M, F, A, Return]))};
{error, Reason} ->
{error, Reason}
end.