1%%
2%% %CopyrightBegin%
3%%
4%% Copyright Ericsson AB 2017-2020. All Rights Reserved.
5%%
6%% Licensed under the Apache License, Version 2.0 (the "License");
7%% you may not use this file except in compliance with the License.
8%% You may obtain a copy of the License at
9%%
10%%     http://www.apache.org/licenses/LICENSE-2.0
11%%
12%% Unless required by applicable law or agreed to in writing, software
13%% distributed under the License is distributed on an "AS IS" BASIS,
14%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15%% See the License for the specific language governing permissions and
16%% limitations under the License.
17%%
18%% %CopyrightEnd%
19%%
20-include_lib("kernel/include/logger.hrl").
21-define(LOGGER_TABLE,logger).
22-define(PROXY_KEY,'$proxy_config$').
23-define(PRIMARY_KEY,'$primary_config$').
24-define(HANDLER_KEY,'$handler_config$').
25-define(LOGGER_META_KEY,'$logger_metadata$').
26-define(STANDARD_HANDLER, default).
27-define(DEFAULT_HANDLER_FILTERS,?DEFAULT_HANDLER_FILTERS([otp])).
28-define(DEFAULT_HANDLER_FILTERS(Domain),
29        [{remote_gl,{fun logger_filters:remote_gl/2,stop}},
30         {domain,{fun logger_filters:domain/2,{log,super,Domain}}},
31         {no_domain,{fun logger_filters:domain/2,{log,undefined,[]}}}]).
32-define(DEFAULT_FORMATTER,logger_formatter).
33-define(DEFAULT_FORMAT_CONFIG,#{legacy_header=>true,
34                                single_line=>false}).
35-define(DEFAULT_FORMAT_TEMPLATE_HEADER,
36        [[logger_formatter,header],"\n",msg,"\n"]).
37-define(DEFAULT_FORMAT_TEMPLATE_SINGLE,
38        [time," ",level,": ",msg,"\n"]).
39-define(DEFAULT_FORMAT_TEMPLATE,
40        [time," ",level,":\n",msg,"\n"]).
41
42-define(DEFAULT_LOGGER_CALL_TIMEOUT, infinity).
43
44-define(LOG_INTERNAL(Level,Log,Report),
45        ?DO_LOG_INTERNAL(Level,Log,[Report])).
46-define(LOG_INTERNAL(Level,Log,Format,Args),
47        ?DO_LOG_INTERNAL(Level,Log,[Format,Args])).
48-define(DO_LOG_INTERNAL(Level,Log,Data),
49        case logger:allow(Level,?MODULE) of
50            true ->
51                _ = logger_server:do_internal_log(Level,?LOCATION,Log,Data),
52                ok;
53            false ->
54                ok
55        end).
56
57%%%-----------------------------------------------------------------
58%%% Levels
59%%% Using same as syslog
60-define(LEVELS,[none,
61                emergency,
62                alert,
63                critical,
64                error,
65                warning,
66                notice,
67                info,
68                debug,
69                all]).
70-define(LOG_NONE,-1).
71-define(EMERGENCY,0).
72-define(ALERT,1).
73-define(CRITICAL,2).
74-define(ERROR,3).
75-define(WARNING,4).
76-define(NOTICE,5).
77-define(INFO,6).
78-define(DEBUG,7).
79-define(LOG_ALL,10).
80
81-define(IS_LEVEL(L),
82        (L=:=emergency orelse
83            L=:=alert orelse
84            L=:=critical orelse
85            L=:=error orelse
86            L=:=warning orelse
87            L=:=notice orelse
88            L=:=info orelse
89            L=:=debug )).
90
91-define(IS_LEVEL_ALL(L),
92        ?IS_LEVEL(L) orelse
93            L=:=all orelse
94            L=:=none ).
95
96-define(IS_MSG(Msg),
97        ((is_tuple(Msg) andalso tuple_size(Msg)==2)
98         andalso
99           (is_list(element(1,Msg)) andalso is_list(element(2,Msg)))
100         orelse
101           (element(1,Msg)==report andalso ?IS_REPORT(element(2,Msg)))
102         orelse
103           (element(1,Msg)==string andalso ?IS_STRING(element(2,Msg))))).
104
105-define(IS_REPORT(Report),
106        (is_map(Report) orelse (is_list(Report) andalso is_tuple(hd(Report))))).
107
108-define(IS_STRING(String),
109        (is_list(String) orelse is_binary(String))).
110
111-define(IS_FORMAT(Format),
112        (?IS_STRING(Format) orelse is_atom(Format))).
113