From 566a6dc626456c6bc1e516b3af518b3113fa43a7 Mon Sep 17 00:00:00 2001 From: Mark Allen Date: Fri, 1 May 2015 14:49:27 -0500 Subject: [PATCH] If Sink referenced but not running, return error If a sink is referenced in a call, but is not configured (by being a running process), then emit an {error, {sink_not_configured, Sink}} tuple. --- src/lager.erl | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/lager.erl b/src/lager.erl index 4d785bc..426ee21 100644 --- a/src/lager.erl +++ b/src/lager.erl @@ -86,13 +86,18 @@ md(_) -> dispatch_log(Severity, Metadata, Format, Args, Size) when is_atom(Severity)-> dispatch_log(?DEFAULT_SINK, Severity, Metadata, Format, Args, Size). --spec dispatch_log(atom(), log_level(), list(), string(), list() | none, pos_integer()) -> ok | {error, lager_not_running}. +-spec dispatch_log(atom(), log_level(), list(), string(), list() | none, pos_integer()) -> ok | {error, lager_not_running} | {error, {sink_not_configured, term()}}. %% this is the same check that the parse transform bakes into the module at compile time dispatch_log(Sink, Severity, Metadata, Format, Args, Size) when is_atom(Severity)-> SeverityAsInt=lager_util:level_to_num(Severity), case {whereis(Sink), lager_config:get({Sink, loglevel}, {?LOG_NONE, []})} of {undefined, _} -> - {error, lager_not_running}; + case whereis(lager_event) of + false -> + {error, lager_not_running}; + true -> + {error, {sink_not_configured, Sink}} + end; {SinkPid, {Level, Traces}} when (Level band SeverityAsInt) /= 0 orelse Traces /= [] -> do_log(Severity, Metadata, Format, Args, Size, SeverityAsInt, Level, Traces, Sink, SinkPid); _ -> @@ -117,7 +122,7 @@ do_log(Severity, Metadata, Format, Args, Size, SeverityAsInt, LevelThreshold, Tr end, LagerMsg = lager_msg:new(Msg, Severity, Metadata, Destinations), - case lager_config:get({Sink, async}, false) of %% this needs to be able to get value from a non-default sink + case lager_config:get({Sink, async}, false) of true -> gen_event:notify(SinkPid, {log, LagerMsg}); false ->