summaryrefslogtreecommitdiff
path: root/src/rebar_log.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rebar_log.erl')
-rw-r--r--src/rebar_log.erl37
1 files changed, 25 insertions, 12 deletions
diff --git a/src/rebar_log.erl b/src/rebar_log.erl
index 4108c9c..ba25332 100644
--- a/src/rebar_log.erl
+++ b/src/rebar_log.erl
@@ -27,8 +27,17 @@
-module(rebar_log).
-export([init/1,
- set_level/1, default_level/0,
- log/3]).
+ set_level/1,
+ error_level/0,
+ default_level/0,
+ log/3,
+ log/4,
+ is_verbose/1]).
+
+-define(ERROR_LEVEL, 0).
+-define(WARN_LEVEL, 1).
+-define(INFO_LEVEL, 2).
+-define(DEBUG_LEVEL, 3).
%% ===================================================================
%% Public API
@@ -37,35 +46,39 @@
init(Config) ->
Verbosity = rebar_config:get_global(Config, verbose, default_level()),
case valid_level(Verbosity) of
- 0 -> set_level(error);
- 1 -> set_level(warn);
- 2 -> set_level(info);
- 3 -> set_level(debug)
+ ?ERROR_LEVEL -> set_level(error);
+ ?WARN_LEVEL -> set_level(warn);
+ ?INFO_LEVEL -> set_level(info);
+ ?DEBUG_LEVEL -> set_level(debug)
end.
set_level(Level) ->
ok = application:set_env(rebar, log_level, Level).
log(Level, Str, Args) ->
+ log(standard_io, Level, Str, Args).
+
+log(Device, Level, Str, Args) ->
{ok, LogLevel} = application:get_env(rebar, log_level),
case should_log(LogLevel, Level) of
true ->
- io:format(log_prefix(Level) ++ Str, Args);
+ io:format(Device, log_prefix(Level) ++ Str, Args);
false ->
ok
end.
-default_level() -> error_level().
+error_level() -> ?ERROR_LEVEL.
+default_level() -> ?WARN_LEVEL.
+
+is_verbose(Config) ->
+ rebar_config:get_xconf(Config, is_verbose, false).
%% ===================================================================
%% Internal functions
%% ===================================================================
valid_level(Level) ->
- erlang:max(error_level(), erlang:min(Level, debug_level())).
-
-error_level() -> 0.
-debug_level() -> 3.
+ erlang:max(?ERROR_LEVEL, erlang:min(Level, ?DEBUG_LEVEL)).
should_log(debug, _) -> true;
should_log(info, debug) -> false;