summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFred Hebert <mononcqc@ferd.ca>2018-10-20 09:54:51 -0400
committerFred Hebert <mononcqc@ferd.ca>2018-10-20 09:54:51 -0400
commitbf039fa4c4d7ea9dc0d9a842f2ab2aa93a9c61d3 (patch)
tree70871e671cfb0ab04563566a7167110cebb7f850
parent384d8cccce85de1474d65272ef8f87767ac5bfc4 (diff)
Fallback when logging isn't initialized
In some cases, such as when the global rebar.config file contains typoes and invalid terms, the rebar3 executable fails when trying to log the error since it hasn't been set yet, such as in #1792 This patch fixes that by going for a fallback mechanism.
-rw-r--r--src/rebar_log.erl15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/rebar_log.erl b/src/rebar_log.erl
index 9150346..7fc2312 100644
--- a/src/rebar_log.erl
+++ b/src/rebar_log.erl
@@ -93,11 +93,18 @@ get_level() ->
end.
log(Level = error, Str, Args) ->
- {ok, LogState} = application:get_env(rebar, log),
- ec_cmd_log:Level(LogState, lists:flatten(cf:format("~!^~ts~n", [Str])), Args);
+ case application:get_env(rebar, log) of
+ {ok, LogState} ->
+ NewStr = lists:flatten(cf:format("~!^~ts~n", [Str])),
+ ec_cmd_log:Level( LogState, NewStr, Args);
+ undefined -> % fallback
+ io:format(standard_error, Str++"~n", Args)
+ end;
log(Level, Str, Args) ->
- {ok, LogState} = application:get_env(rebar, log),
- ec_cmd_log:Level(LogState, Str++"~n", Args).
+ case application:get_env(rebar, log) of
+ {ok, LogState} -> ec_cmd_log:Level(LogState, Str++"~n", Args);
+ undefined -> io:format(Str++"~n", Args)
+ end.
crashdump(Str, Args) ->
crashdump("rebar3.crashdump", Str, Args).