diff options
author | Fred Hebert <mononcqc@ferd.ca> | 2018-10-20 09:54:51 -0400 |
---|---|---|
committer | Fred Hebert <mononcqc@ferd.ca> | 2018-10-20 09:54:51 -0400 |
commit | bf039fa4c4d7ea9dc0d9a842f2ab2aa93a9c61d3 (patch) | |
tree | 70871e671cfb0ab04563566a7167110cebb7f850 | |
parent | 384d8cccce85de1474d65272ef8f87767ac5bfc4 (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.erl | 15 |
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). |