mirror of
https://github.com/correl/rebar.git
synced 2024-12-24 03:00:16 +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
|
||||
Roberto Aloi
|
||||
Luis Rascao
|
||||
Andrey Teplyashin
|
||||
|
|
|
@ -56,6 +56,9 @@
|
|||
%% Default log level
|
||||
{log_level, warn},
|
||||
|
||||
%% Log colored
|
||||
{log_colored, true},
|
||||
|
||||
%% any_dir processing modules
|
||||
{any_dir_modules, [
|
||||
rebar_require_vsn,
|
||||
|
|
|
@ -40,23 +40,40 @@ run(_Dir) ->
|
|||
SharedExpected = "==> logging_rt \\(compile\\)",
|
||||
%% provoke ERROR due to an invalid app file
|
||||
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,
|
||||
[SharedExpected, "ERROR: "],
|
||||
["WARN: ", "INFO: ", "DEBUG: "]),
|
||||
[SharedExpected, Error],
|
||||
[Warn, Info, Debug]),
|
||||
%% fix bad app file
|
||||
ok = file:write_file(?APP_FILE, app(logging, [])),
|
||||
retest:log(info, "Check 'compile' success output~n"),
|
||||
ok = check_output("./rebar compile", should_succeed,
|
||||
[SharedExpected],
|
||||
["ERROR: ", "WARN: ", "INFO: ", "DEBUG: "]),
|
||||
[Error, Warn, Info, Debug]),
|
||||
retest:log(info, "Check 'compile -v' success output~n"),
|
||||
ok = check_output("./rebar compile -v", should_succeed,
|
||||
[SharedExpected],
|
||||
["ERROR: ", "INFO: ", "DEBUG: "]),
|
||||
[Error, Info, Debug]),
|
||||
retest:log(info, "Check 'compile -vv' success output~n"),
|
||||
ok = check_output("./rebar compile -vv", should_succeed,
|
||||
[SharedExpected, "DEBUG: "],
|
||||
["ERROR: ", "INFO: "]),
|
||||
[SharedExpected, Debug],
|
||||
[Error, Info]),
|
||||
ok.
|
||||
|
||||
check_output(Cmd, FailureMode, Expected, Unexpected) ->
|
||||
|
@ -73,7 +90,7 @@ check_output(Cmd, FailureMode, Expected, Unexpected) ->
|
|||
end.
|
||||
|
||||
check_output1(Cmd, Captured, Expected, Unexpected) ->
|
||||
ReOpts = [{capture, all, list}],
|
||||
ReOpts = [{capture, all, list}, unicode],
|
||||
ExMatches =
|
||||
lists:zf(
|
||||
fun(Pattern) ->
|
||||
|
|
|
@ -50,19 +50,28 @@ init(Config) ->
|
|||
?WARN_LEVEL -> set_level(warn);
|
||||
?INFO_LEVEL -> set_level(info);
|
||||
?DEBUG_LEVEL -> set_level(debug)
|
||||
end.
|
||||
end,
|
||||
LogColored = rebar_config:get_global(Config, log_colored, true),
|
||||
set_log_colored(LogColored).
|
||||
|
||||
|
||||
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(standard_io, 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
|
||||
true ->
|
||||
io:format(Device, log_prefix(Level) ++ Str, Args);
|
||||
io:format(Device, log_prefix(Level, LogColored) ++ Str, Args);
|
||||
false ->
|
||||
ok
|
||||
end.
|
||||
|
@ -90,7 +99,33 @@ should_log(error, error) -> true;
|
|||
should_log(error, _) -> 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(info) -> "INFO: ";
|
||||
log_prefix(warn) -> "WARN: ";
|
||||
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