/
erlca_log.erl
62 lines (51 loc) · 1.58 KB
/
erlca_log.erl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
%%% -*- erlang -*-
%%%
%%% This file is part of erlca released under the Apache 2 license.
%%% See the NOTICE for more information.
-module(erlca_log).
-export([init/0,
set_level/1, get_level/0,
log/3]).
%% ===================================================================
%% Public API
%% ===================================================================
init() ->
case erlca_config:get_global(verbose, "0") of
"1" ->
set_level(debug);
_ ->
set_level(error)
end.
set_level(Level) ->
ok = application:set_env(erlca, log_level, Level).
get_level() ->
case application:get_env(erlca, log_level) of
undefined ->
error;
{ok, Value} ->
Value
end.
log(Level, Str, Args) ->
{ok, LogLevel} = application:get_env(erlca, log_level),
case should_log(LogLevel, Level) of
true ->
io:format(log_prefix(Level) ++ Str, Args);
false ->
ok
end.
%% ===================================================================
%% Internal functions
%% ===================================================================
should_log(debug, _) -> true;
should_log(info, debug) -> false;
should_log(info, _) -> true;
should_log(warn, debug) -> false;
should_log(warn, info) -> false;
should_log(warn, _) -> true;
should_log(error, error) -> true;
should_log(error, _) -> false;
should_log(_, _) -> false.
log_prefix(debug) -> "DEBUG: ";
log_prefix(info) -> "INFO: ";
log_prefix(warn) -> "WARN: ";
log_prefix(error) -> "ERROR: ".