mirror of
https://github.com/correl/rebar.git
synced 2024-11-23 19:19:54 +00:00
Merge branch 'color_in_logs' of https://github.com/platinumthinker/rebar into platinumthinker-color_in_logs
Conflicts: THANKS
This commit is contained in:
commit
733d3771fa
4 changed files with 67 additions and 11 deletions
1
THANKS
1
THANKS
|
@ -129,3 +129,4 @@ Andras Horvath
|
||||||
Drew Varner
|
Drew Varner
|
||||||
Roberto Aloi
|
Roberto Aloi
|
||||||
Luis Rascao
|
Luis Rascao
|
||||||
|
Andrey Teplyashin
|
||||||
|
|
|
@ -56,6 +56,9 @@
|
||||||
%% Default log level
|
%% Default log level
|
||||||
{log_level, warn},
|
{log_level, warn},
|
||||||
|
|
||||||
|
%% Log colored
|
||||||
|
{log_colored, true},
|
||||||
|
|
||||||
%% any_dir processing modules
|
%% any_dir processing modules
|
||||||
{any_dir_modules, [
|
{any_dir_modules, [
|
||||||
rebar_require_vsn,
|
rebar_require_vsn,
|
||||||
|
|
|
@ -40,23 +40,40 @@ run(_Dir) ->
|
||||||
SharedExpected = "==> logging_rt \\(compile\\)",
|
SharedExpected = "==> logging_rt \\(compile\\)",
|
||||||
%% provoke ERROR due to an invalid app file
|
%% provoke ERROR due to an invalid app file
|
||||||
retest:log(info, "Check 'compile' failure output~n"),
|
retest:log(info, "Check 'compile' failure output~n"),
|
||||||
|
{Error, Warn, Info, Debug} =
|
||||||
|
case application:get_env(rebar, log_colored) of
|
||||||
|
{ok, true} ->
|
||||||
|
{
|
||||||
|
"\\e\\[1m\\e\\[31mERROR: \\e\\[0m",
|
||||||
|
"\\e\\[33mWARN: \\e\\[0m",
|
||||||
|
"\\e\\[32mINFO: \\e\\[0m",
|
||||||
|
"\\e\\[34mDEBUG: \\e\\[0m"
|
||||||
|
};
|
||||||
|
_ ->
|
||||||
|
{
|
||||||
|
"ERROR: ",
|
||||||
|
"WARN: ",
|
||||||
|
"INFO: ",
|
||||||
|
"DEBUG: "
|
||||||
|
}
|
||||||
|
end,
|
||||||
ok = check_output("./rebar compile -q", should_fail,
|
ok = check_output("./rebar compile -q", should_fail,
|
||||||
[SharedExpected, "ERROR: "],
|
[SharedExpected, Error],
|
||||||
["WARN: ", "INFO: ", "DEBUG: "]),
|
[Warn, Info, Debug]),
|
||||||
%% fix bad app file
|
%% fix bad app file
|
||||||
ok = file:write_file(?APP_FILE, app(logging, [])),
|
ok = file:write_file(?APP_FILE, app(logging, [])),
|
||||||
retest:log(info, "Check 'compile' success output~n"),
|
retest:log(info, "Check 'compile' success output~n"),
|
||||||
ok = check_output("./rebar compile", should_succeed,
|
ok = check_output("./rebar compile", should_succeed,
|
||||||
[SharedExpected],
|
[SharedExpected],
|
||||||
["ERROR: ", "WARN: ", "INFO: ", "DEBUG: "]),
|
[Error, Warn, Info, Debug]),
|
||||||
retest:log(info, "Check 'compile -v' success output~n"),
|
retest:log(info, "Check 'compile -v' success output~n"),
|
||||||
ok = check_output("./rebar compile -v", should_succeed,
|
ok = check_output("./rebar compile -v", should_succeed,
|
||||||
[SharedExpected],
|
[SharedExpected],
|
||||||
["ERROR: ", "INFO: ", "DEBUG: "]),
|
[Error, Info, Debug]),
|
||||||
retest:log(info, "Check 'compile -vv' success output~n"),
|
retest:log(info, "Check 'compile -vv' success output~n"),
|
||||||
ok = check_output("./rebar compile -vv", should_succeed,
|
ok = check_output("./rebar compile -vv", should_succeed,
|
||||||
[SharedExpected, "DEBUG: "],
|
[SharedExpected, Debug],
|
||||||
["ERROR: ", "INFO: "]),
|
[Error, Info]),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
check_output(Cmd, FailureMode, Expected, Unexpected) ->
|
check_output(Cmd, FailureMode, Expected, Unexpected) ->
|
||||||
|
@ -73,7 +90,7 @@ check_output(Cmd, FailureMode, Expected, Unexpected) ->
|
||||||
end.
|
end.
|
||||||
|
|
||||||
check_output1(Cmd, Captured, Expected, Unexpected) ->
|
check_output1(Cmd, Captured, Expected, Unexpected) ->
|
||||||
ReOpts = [{capture, all, list}],
|
ReOpts = [{capture, all, list}, unicode],
|
||||||
ExMatches =
|
ExMatches =
|
||||||
lists:zf(
|
lists:zf(
|
||||||
fun(Pattern) ->
|
fun(Pattern) ->
|
||||||
|
|
|
@ -50,19 +50,28 @@ init(Config) ->
|
||||||
?WARN_LEVEL -> set_level(warn);
|
?WARN_LEVEL -> set_level(warn);
|
||||||
?INFO_LEVEL -> set_level(info);
|
?INFO_LEVEL -> set_level(info);
|
||||||
?DEBUG_LEVEL -> set_level(debug)
|
?DEBUG_LEVEL -> set_level(debug)
|
||||||
end.
|
end,
|
||||||
|
LogColored = rebar_config:get_global(Config, log_colored, true),
|
||||||
|
set_log_colored(LogColored).
|
||||||
|
|
||||||
|
|
||||||
set_level(Level) ->
|
set_level(Level) ->
|
||||||
ok = application:set_env(rebar, log_level, Level).
|
erlang:put(rebar_log_level, Level).
|
||||||
|
|
||||||
|
set_log_colored(true) ->
|
||||||
|
erlang:put(rebar_log_colored, true);
|
||||||
|
set_log_colored(_LogColored) ->
|
||||||
|
erlang:put(rebar_log_colored, false).
|
||||||
|
|
||||||
log(Level, Str, Args) ->
|
log(Level, Str, Args) ->
|
||||||
log(standard_io, Level, Str, Args).
|
log(standard_io, Level, Str, Args).
|
||||||
|
|
||||||
log(Device, Level, Str, Args) ->
|
log(Device, Level, Str, Args) ->
|
||||||
{ok, LogLevel} = application:get_env(rebar, log_level),
|
LogLevel = erlang:get(rebar_log_level),
|
||||||
|
LogColored = erlang:get(rebar_log_colored),
|
||||||
case should_log(LogLevel, Level) of
|
case should_log(LogLevel, Level) of
|
||||||
true ->
|
true ->
|
||||||
io:format(Device, log_prefix(Level) ++ Str, Args);
|
io:format(Device, log_prefix(Level, LogColored) ++ Str, Args);
|
||||||
false ->
|
false ->
|
||||||
ok
|
ok
|
||||||
end.
|
end.
|
||||||
|
@ -90,7 +99,33 @@ should_log(error, error) -> true;
|
||||||
should_log(error, _) -> false;
|
should_log(error, _) -> false;
|
||||||
should_log(_, _) -> false.
|
should_log(_, _) -> false.
|
||||||
|
|
||||||
|
log_prefix(Level, _Colored = false) ->
|
||||||
|
log_prefix(Level);
|
||||||
|
log_prefix(Level, _Colored = true) ->
|
||||||
|
color_from_level(Level) ++ log_prefix(Level) ++ reset_color().
|
||||||
|
|
||||||
log_prefix(debug) -> "DEBUG: ";
|
log_prefix(debug) -> "DEBUG: ";
|
||||||
log_prefix(info) -> "INFO: ";
|
log_prefix(info) -> "INFO: ";
|
||||||
log_prefix(warn) -> "WARN: ";
|
log_prefix(warn) -> "WARN: ";
|
||||||
log_prefix(error) -> "ERROR: ".
|
log_prefix(error) -> "ERROR: ".
|
||||||
|
|
||||||
|
color_from_level(debug) ->
|
||||||
|
color_foreground(blue);
|
||||||
|
color_from_level(info) ->
|
||||||
|
color_foreground(green);
|
||||||
|
color_from_level(warn) ->
|
||||||
|
color_foreground(yellow);
|
||||||
|
color_from_level(error) ->
|
||||||
|
color_bold() ++ color_foreground(red).
|
||||||
|
|
||||||
|
color_foreground(black) -> "\e[30m";
|
||||||
|
color_foreground(red) -> "\e[31m";
|
||||||
|
color_foreground(green) -> "\e[32m";
|
||||||
|
color_foreground(yellow) -> "\e[33m";
|
||||||
|
color_foreground(blue) -> "\e[34m";
|
||||||
|
color_foreground(magenta) -> "\e[35m";
|
||||||
|
color_foreground(cyan) -> "\e[36m";
|
||||||
|
color_foreground(white) -> "\e[37m".
|
||||||
|
|
||||||
|
color_bold() -> "\e[1m".
|
||||||
|
reset_color() -> "\e[0m".
|
||||||
|
|
Loading…
Reference in a new issue