aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvgeny Khramtsov <ekhramtsov@process-one.net>2019-10-18 19:12:32 +0300
committerEvgeny Khramtsov <ekhramtsov@process-one.net>2019-10-18 19:12:32 +0300
commite4a8afb15d6c995b294a60ed150b86775e2f6805 (patch)
treef1a739fe3737fce2cf0ea79740c9ebee92290287 /src
parentFlatten strings in ejabberd_xmlrpc error results (diff)
Replace lager with built-in new logging API
This change requires Erlang/OTP-21.0 or higher. The commit also deprecates the following options: - log_rotate_date - log_rate_limit Furthermore, these options have no effect. The logger now fully relies on log_rotate_size, that cannot be 0 anymore. The loglevel option now accepts levels in literal formats. Those are: none, emergency, alert, critical, error, warning, notice, info, debug. Old integer values (0-5) are still supported and automatically converted into literal format.
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd.app.src.in2
-rw-r--r--src/ejabberd.erl3
-rw-r--r--src/ejabberd_admin.erl36
-rw-r--r--src/ejabberd_app.erl2
-rw-r--r--src/ejabberd_config.erl4
-rw-r--r--src/ejabberd_config_transformer.erl12
-rw-r--r--src/ejabberd_ctl.erl1
-rw-r--r--src/ejabberd_logger.erl275
-rw-r--r--src/ejabberd_option.erl16
-rw-r--r--src/ejabberd_options.erl28
-rw-r--r--src/ejabberd_system_monitor.erl16
-rw-r--r--src/mod_pubsub.erl4
12 files changed, 153 insertions, 246 deletions
diff --git a/src/ejabberd.app.src.in b/src/ejabberd.app.src.in
index f1d08b8c7..7908ec101 100644
--- a/src/ejabberd.app.src.in
+++ b/src/ejabberd.app.src.in
@@ -6,7 +6,7 @@
{modules, []},
{registered, []},
{applications, [kernel, stdlib, sasl, ssl]},
- {included_applications, [os_mon, lager, mnesia, inets, p1_utils, fast_yaml, fast_tls, pkix, xmpp, cache_tab, eimp]},
+ {included_applications, [os_mon, mnesia, inets, p1_utils, fast_yaml, fast_tls, pkix, xmpp, cache_tab, eimp]},
{env, [{enabled_backends, [@enabled_backends@]}]},
{mod, {ejabberd_app, []}}]}.
diff --git a/src/ejabberd.erl b/src/ejabberd.erl
index 7bc900407..4758fd2f9 100644
--- a/src/ejabberd.erl
+++ b/src/ejabberd.erl
@@ -49,8 +49,7 @@ stop() ->
application:stop(ejabberd).
halt() ->
- _ = application:stop(lager),
- _ = application:stop(sasl),
+ ejabberd_logger:flush(),
erlang:halt(1, [{flush, true}]).
%% @spec () -> false | string()
diff --git a/src/ejabberd_admin.erl b/src/ejabberd_admin.erl
index 3961c56ce..7776af3a1 100644
--- a/src/ejabberd_admin.erl
+++ b/src/ejabberd_admin.erl
@@ -142,20 +142,16 @@ get_commands_spec() ->
desc = "Get the current loglevel",
module = ejabberd_logger, function = get,
result_desc = "Tuple with the log level number, its keyword and description",
- result_example = {4, info, <<"Info">>},
+ result_example = warning,
args = [],
- result = {leveltuple, {tuple, [{levelnumber, integer},
- {levelatom, atom},
- {leveldesc, string}
- ]}}},
+ result = {levelatom, atom}},
#ejabberd_commands{name = set_loglevel, tags = [logs, server],
- desc = "Set the loglevel (0 to 5)",
+ desc = "Set the loglevel",
module = ?MODULE, function = set_loglevel,
- args_desc = ["Integer of the desired logging level, between 1 and 5"],
- args_example = [5],
- result_desc = "The type of logger module used",
- result_example = lager,
- args = [{loglevel, integer}],
+ args_desc = ["Desired logging level: none | emergency | alert | critical "
+ "| error | warning | notice | info | debug"],
+ args_example = [debug],
+ args = [{loglevel, string}],
result = {res, rescode}},
#ejabberd_commands{name = update_list, tags = [server],
@@ -410,15 +406,23 @@ status() ->
{Is_running, String1 ++ String2}.
reopen_log() ->
- ejabberd_hooks:run(reopen_log_hook, []),
- ejabberd_logger:reopen_log().
+ ejabberd_hooks:run(reopen_log_hook, []).
rotate_log() ->
- ejabberd_hooks:run(rotate_log_hook, []),
- ejabberd_logger:rotate_log().
+ ejabberd_hooks:run(rotate_log_hook, []).
set_loglevel(LogLevel) ->
- ejabberd_logger:set(LogLevel).
+ try binary_to_existing_atom(iolist_to_binary(LogLevel), latin1) of
+ Level ->
+ case lists:member(Level, ejabberd_logger:loglevels()) of
+ true ->
+ ejabberd_logger:set(Level);
+ false ->
+ {error, "Invalid log level"}
+ end
+ catch _:_ ->
+ {error, "Invalid log level"}
+ end.
%%%
%%% Stop Kindly
diff --git a/src/ejabberd_app.erl b/src/ejabberd_app.erl
index f7df1dd7f..d777fd86e 100644
--- a/src/ejabberd_app.erl
+++ b/src/ejabberd_app.erl
@@ -84,8 +84,6 @@ start_included_apps() ->
lists:foreach(
fun(mnesia) ->
ok;
- (lager)->
- ok;
(os_mon)->
ok;
(App) ->
diff --git a/src/ejabberd_config.erl b/src/ejabberd_config.erl
index 9d0290f41..aa13dec87 100644
--- a/src/ejabberd_config.erl
+++ b/src/ejabberd_config.erl
@@ -522,7 +522,7 @@ read_erlang_file(File, _) ->
validate(Y1) ->
case pre_validate(Y1) of
{ok, Y2} ->
- set_loglevel(proplists:get_value(loglevel, Y2, 4)),
+ set_loglevel(proplists:get_value(loglevel, Y2, info)),
case ejabberd_config_transformer:map_reduce(Y2) of
{ok, Y3} ->
Hosts = proplists:get_value(hosts, Y3),
@@ -763,7 +763,7 @@ set_shared_key() ->
set_node_start(UnixTime) ->
set_option(node_start, UnixTime).
--spec set_loglevel(0..5) -> ok.
+-spec set_loglevel(logger:level()) -> ok.
set_loglevel(Level) ->
ejabberd_logger:set(Level).
diff --git a/src/ejabberd_config_transformer.erl b/src/ejabberd_config_transformer.erl
index 18d79295b..4dbb2a22f 100644
--- a/src/ejabberd_config_transformer.erl
+++ b/src/ejabberd_config_transformer.erl
@@ -30,12 +30,6 @@ map_reduce(Y) ->
F = fun(Y1) ->
Y2 = (validator())(Y1),
Y3 = transform(Y2),
- if Y2 /= Y3 ->
- ?DEBUG("Transformed configuration:~ts~n",
- [misc:format_val({yaml, Y3})]);
- true ->
- ok
- end,
Y3
end,
econf:validate(F, Y).
@@ -148,6 +142,12 @@ filter(Host, Y, Acc) ->
filter(Host, Opt, Val, Acc)
end, Y).
+filter(_Host, log_rotate_date, _, _) ->
+ warn_removed_option(log_rotate_date),
+ false;
+filter(_Host, log_rate_limit, _, _) ->
+ warn_removed_option(log_rate_limit),
+ false;
filter(_Host, ca_path, _, _) ->
warn_removed_option(ca_path, ca_file),
false;
diff --git a/src/ejabberd_ctl.erl b/src/ejabberd_ctl.erl
index 731b704e1..76a028389 100644
--- a/src/ejabberd_ctl.erl
+++ b/src/ejabberd_ctl.erl
@@ -68,6 +68,7 @@
%%-----------------------------
start() ->
+ logger:set_primary_config(level, none),
[SNode, Timeout, Args] = case init:get_plain_arguments() of
[SNode2, "--no-timeout" | Args2] ->
[SNode2, infinity, Args2];
diff --git a/src/ejabberd_logger.erl b/src/ejabberd_logger.erl
index fa4151283..c1abd19b7 100644
--- a/src/ejabberd_logger.erl
+++ b/src/ejabberd_logger.erl
@@ -23,34 +23,30 @@
%%%-------------------------------------------------------------------
-module(ejabberd_logger).
+-compile({no_auto_import, [get/0]}).
+
+-include_lib("kernel/include/logger.hrl").
%% API
--export([start/0, restart/0, reopen_log/0, rotate_log/0, get/0, set/1,
- get_log_path/0]).
+-export([start/0, get/0, set/1, get_log_path/0, flush/0]).
+-export([convert_loglevel/1, loglevels/0]).
+%% Deprecated functions
+-export([restart/0, reopen_log/0, rotate_log/0]).
+-deprecated([{restart, 0},
+ {reopen_log, 0},
+ {rotate_log, 0}]).
+-type loglevel() :: none | logger:level().
--type loglevel() :: 0 | 1 | 2 | 3 | 4 | 5.
--type lager_level() :: none | emergency | alert | critical |
- error | warning | notice | info | debug.
-
--spec start() -> ok.
--spec get_log_path() -> string().
--spec reopen_log() -> ok.
--spec rotate_log() -> ok.
--spec get() -> {loglevel(), atom(), string()}.
--spec set(loglevel()) -> ok.
+-define(is_loglevel(L),
+ ((L == none) or (L == emergency) or (L == alert)
+ or (L == critical) or (L == error) or (L == warning)
+ or (L == notice) or (L == info) or (L == debug))).
%%%===================================================================
%%% API
%%%===================================================================
-%% @doc Returns the full path to the ejabberd log file.
-%% It first checks for application configuration parameter 'log_path'.
-%% If not defined it checks the environment variable EJABBERD_LOG_PATH.
-%% And if that one is neither defined, returns the default value:
-%% "ejabberd.log" in current directory.
-%% Note: If the directory where to place the ejabberd log file to not exist,
-%% it is not created and no log file will be generated.
-%% @spec () -> string()
+-spec get_log_path() -> string().
get_log_path() ->
case ejabberd_config:env_binary_to_list(ejabberd, log_path) of
{ok, Path} ->
@@ -64,186 +60,113 @@ get_log_path() ->
end
end.
+-spec get_integer_env(atom(), T) -> T.
get_integer_env(Name, Default) ->
case application:get_env(ejabberd, Name) of
- {ok, I} when is_integer(I), I>=0 ->
+ {ok, I} when is_integer(I), I>0 ->
I;
undefined ->
Default;
{ok, Junk} ->
- error_logger:error_msg("wrong value for ~ts: ~p; "
- "using ~p as a fallback~n",
- [Name, Junk, Default]),
- Default
- end.
-get_string_env(Name, Default) ->
- case application:get_env(ejabberd, Name) of
- {ok, L} when is_list(L) ->
- L;
- undefined ->
- Default;
- {ok, Junk} ->
- error_logger:error_msg("wrong value for ~ts: ~p; "
- "using ~p as a fallback~n",
- [Name, Junk, Default]),
+ ?LOG_ERROR("Wrong value for ~ts: ~p; "
+ "using ~p as a fallback",
+ [Name, Junk, Default]),
Default
end.
-%% @spec () -> ok
+-spec loglevels() -> [loglevel(), ...].
+loglevels() ->
+ [none, emergency, alert, critical, error, warning, notice, info, debug].
+
+-spec convert_loglevel(0..5) -> loglevel().
+convert_loglevel(0) -> none;
+convert_loglevel(1) -> critical;
+convert_loglevel(2) -> error;
+convert_loglevel(3) -> warning;
+convert_loglevel(4) -> info;
+convert_loglevel(5) -> debug.
+
+-spec start() -> ok.
start() ->
- start(4).
+ start(info).
-spec start(loglevel()) -> ok.
start(Level) ->
- LLevel = get_lager_loglevel(Level),
- StartedApps = application:which_applications(5000),
- case lists:keyfind(logger, 1, StartedApps) of
- %% Elixir logger is started. We assume everything is in place
- %% to use lager to Elixir logger bridge.
- {logger, _, _} ->
- error_logger:info_msg("Ignoring ejabberd logger options, using Elixir Logger.", []),
- %% Do not start lager, we rely on Elixir Logger
- do_start_for_logger(LLevel);
- _ ->
- do_start(LLevel)
- end.
-
-do_start_for_logger(Level) ->
- application:load(sasl),
- application:set_env(sasl, sasl_error_logger, false),
- application:load(lager),
- application:set_env(lager, error_logger_redirect, false),
- application:set_env(lager, error_logger_whitelist, ['Elixir.Logger.ErrorHandler']),
- application:set_env(lager, crash_log, false),
- application:set_env(lager, handlers, [{elixir_logger_backend, [{level, Level}]}]),
- ejabberd:start_app(lager),
- ok.
-
--spec do_start(atom()) -> ok.
-do_start(Level) ->
- application:load(sasl),
- application:set_env(sasl, sasl_error_logger, false),
- application:load(lager),
- ConsoleLog = get_log_path(),
- Dir = filename:dirname(ConsoleLog),
+ EjabberdLog = get_log_path(),
+ Dir = filename:dirname(EjabberdLog),
ErrorLog = filename:join([Dir, "error.log"]),
- CrashLog = filename:join([Dir, "crash.log"]),
- LogRotateDate = get_string_env(log_rotate_date, ""),
LogRotateSize = get_integer_env(log_rotate_size, 10*1024*1024),
LogRotateCount = get_integer_env(log_rotate_count, 1),
- LogRateLimit = get_integer_env(log_rate_limit, 100),
- ConsoleLevel = case get_lager_version() >= "3.6.0" of
- true -> [{level, Level}];
- false -> Level
- end,
- application:set_env(lager, error_logger_hwm, LogRateLimit),
- application:set_env(
- lager, handlers,
- [{lager_console_backend, ConsoleLevel},
- {lager_file_backend, [{file, ConsoleLog}, {level, Level}, {date, LogRotateDate},
- {count, LogRotateCount}, {size, LogRotateSize}]},
- {lager_file_backend, [{file, ErrorLog}, {level, error}, {date, LogRotateDate},
- {count, LogRotateCount}, {size, LogRotateSize}]}]),
- application:set_env(lager, crash_log, CrashLog),
- application:set_env(lager, crash_log_date, LogRotateDate),
- application:set_env(lager, crash_log_size, LogRotateSize),
- application:set_env(lager, crash_log_count, LogRotateCount),
- ejabberd:start_app(lager),
- lists:foreach(fun(Handler) ->
- lager:set_loghwm(Handler, LogRateLimit)
- end, gen_event:which_handlers(lager_event)).
+ Config = #{max_no_bytes => LogRotateSize,
+ max_no_files => LogRotateCount,
+ filesync_repeat_interval => no_repeat,
+ sync_mode_qlen => 1000,
+ drop_mode_qlen => 1000,
+ flush_qlen => 5000},
+ FmtConfig = #{legacy_header => false,
+ time_designator => $ ,
+ max_size => 100*1024,
+ single_line => false},
+ FileFmtConfig = FmtConfig#{template => file_template()},
+ ConsoleFmtConfig = FmtConfig#{template => console_template()},
+ logger:set_primary_config(level, Level),
+ logger:add_primary_filter(progress_report,
+ {fun logger_filters:progress/2, stop}),
+ logger:update_formatter_config(default, ConsoleFmtConfig),
+ logger:add_handler(ejabberd_log, logger_std_h,
+ #{level => all,
+ config => Config#{file => EjabberdLog},
+ formatter => {logger_formatter, FileFmtConfig}}),
+ logger:add_handler(error_log, logger_std_h,
+ #{level => error,
+ config => Config#{file => ErrorLog},
+ formatter => {logger_formatter, FileFmtConfig}}),
+ ok.
restart() ->
- Level = ejabberd_option:loglevel(),
- application:stop(lager),
- start(Level).
+ ok.
+
+console_template() ->
+ [time, " [", level, "] ", msg, io_lib:nl()].
+
+file_template() ->
+ [time, " [", level, "] ", pid,
+ {mfa, ["@", mfa, {line, [":", line], []}], []}, " ", msg, io_lib:nl()].
-%% @spec () -> ok
reopen_log() ->
- %% Lager detects external log rotation automatically.
ok.
-%% @spec () -> ok
rotate_log() ->
- catch lager_crash_log ! rotate,
- lists:foreach(
- fun({lager_file_backend, File}) ->
- whereis(lager_event) ! {rotate, File};
- (_) ->
- ok
- end, gen_event:which_handlers(lager_event)).
+ ok.
-%% @spec () -> {loglevel(), atom(), string()}
+-spec get() -> loglevel().
get() ->
- case get_lager_loglevel() of
- none -> {0, no_log, "No log"};
- emergency -> {1, critical, "Critical"};
- alert -> {1, critical, "Critical"};
- critical -> {1, critical, "Critical"};
- error -> {2, error, "Error"};
- warning -> {3, warning, "Warning"};
- notice -> {3, warning, "Warning"};
- info -> {4, info, "Info"};
- debug -> {5, debug, "Debug"}
- end.
-
-set(LogLevel) when is_integer(LogLevel) ->
- LagerLogLevel = get_lager_loglevel(LogLevel),
- case get_lager_loglevel() of
- LagerLogLevel ->
- ok;
- _ ->
- ConsoleLog = get_log_path(),
- lists:foreach(
- fun({lager_file_backend, File} = H) when File == ConsoleLog ->
- lager:set_loglevel(H, LagerLogLevel);
- (lager_console_backend = H) ->
- lager:set_loglevel(H, LagerLogLevel);
- (elixir_logger_backend = H) ->
- lager:set_loglevel(H, LagerLogLevel);
- (_) ->
- ok
- end, get_lager_handlers())
- end,
- case LogLevel of
- 5 -> xmpp:set_config([{debug, true}]);
- _ -> xmpp:set_config([{debug, false}])
- end.
-
-get_lager_loglevel() ->
- Handlers = get_lager_handlers(),
- lists:foldl(fun(lager_console_backend, _Acc) ->
- lager:get_loglevel(lager_console_backend);
- (elixir_logger_backend, _Acc) ->
- lager:get_loglevel(elixir_logger_backend);
- (_, Acc) ->
- Acc
- end,
- none, Handlers).
-
--spec get_lager_loglevel(loglevel()) -> lager_level().
-get_lager_loglevel(LogLevel) ->
- case LogLevel of
- 0 -> none;
- 1 -> critical;
- 2 -> error;
- 3 -> warning;
- 4 -> info;
- 5 -> debug
- end.
-
-get_lager_handlers() ->
- case catch gen_event:which_handlers(lager_event) of
- {'EXIT',noproc} ->
- [];
- Result ->
- Result
+ #{level := Level} = logger:get_primary_config(),
+ Level.
+
+-spec set(0..5 | loglevel()) -> ok.
+set(N) when is_integer(N), N>=0, N=<5 ->
+ set(convert_loglevel(N));
+set(Level) when ?is_loglevel(Level) ->
+ case get() of
+ Level -> ok;
+ PrevLevel ->
+ ?LOG_NOTICE("Changing loglevel from '~s' to '~s'",
+ [PrevLevel, Level]),
+ logger:set_primary_config(level, Level),
+ case Level of
+ debug -> xmpp:set_config([{debug, true}]);
+ _ -> xmpp:set_config([{debug, false}])
+ end
end.
--spec get_lager_version() -> string().
-get_lager_version() ->
- Apps = application:loaded_applications(),
- case lists:keyfind(lager, 1, Apps) of
- {_, _, Vsn} -> Vsn;
- false -> "0.0.0"
- end.
+-spec flush() -> ok.
+flush() ->
+ lists:foreach(
+ fun(#{id := HandlerId, module := logger_std_h}) ->
+ logger_std_h:filesync(HandlerId);
+ (#{id := HandlerId, module := logger_disk_log_h}) ->
+ logger_disk_log_h:filesync(HandlerId);
+ (_) ->
+ ok
+ end, logger:get_handler_config()).
diff --git a/src/ejabberd_option.erl b/src/ejabberd_option.erl
index 81b0f0c11..d9721ab1f 100644
--- a/src/ejabberd_option.erl
+++ b/src/ejabberd_option.erl
@@ -69,9 +69,7 @@
-export([ldap_tls_verify/0, ldap_tls_verify/1]).
-export([ldap_uids/0, ldap_uids/1]).
-export([listen/0]).
--export([log_rate_limit/0]).
-export([log_rotate_count/0]).
--export([log_rotate_date/0]).
-export([log_rotate_size/0]).
-export([loglevel/0]).
-export([max_fsm_queue/0, max_fsm_queue/1]).
@@ -556,23 +554,15 @@ ldap_uids(Host) ->
listen() ->
ejabberd_config:get_option({listen, global}).
--spec log_rate_limit() -> 'undefined' | non_neg_integer().
-log_rate_limit() ->
- ejabberd_config:get_option({log_rate_limit, global}).
-
--spec log_rotate_count() -> 'undefined' | non_neg_integer().
+-spec log_rotate_count() -> non_neg_integer().
log_rotate_count() ->
ejabberd_config:get_option({log_rotate_count, global}).
--spec log_rotate_date() -> 'undefined' | string().
-log_rotate_date() ->
- ejabberd_config:get_option({log_rotate_date, global}).
-
--spec log_rotate_size() -> 'undefined' | non_neg_integer().
+-spec log_rotate_size() -> 'infinity' | pos_integer().
log_rotate_size() ->
ejabberd_config:get_option({log_rotate_size, global}).
--spec loglevel() -> 0 | 1 | 2 | 3 | 4 | 5.
+-spec loglevel() -> 'none' | logger:level().
loglevel() ->
ejabberd_config:get_option({loglevel, global}).
diff --git a/src/ejabberd_options.erl b/src/ejabberd_options.erl
index 126891bc2..e95ac878d 100644
--- a/src/ejabberd_options.erl
+++ b/src/ejabberd_options.erl
@@ -198,18 +198,19 @@ opt_type(ldap_uids) ->
econf:map(econf:binary(), econf:binary(), [unique]));
opt_type(listen) ->
ejabberd_listener:validator();
-opt_type(log_rate_limit) ->
- econf:non_neg_int();
opt_type(log_rotate_count) ->
econf:non_neg_int();
-opt_type(log_rotate_date) ->
- econf:string("^(\\$((D(([0-9])|(1[0-9])|(2[0-3])))|"
- "(((W[0-6])|(M(([1-2][0-9])|(3[0-1])|([1-9]))))"
- "(D(([0-9])|(1[0-9])|(2[0-3])))?)))?$");
opt_type(log_rotate_size) ->
- econf:non_neg_int();
+ econf:pos_int(infinity);
opt_type(loglevel) ->
- econf:int(0, 5);
+ fun(N) when is_integer(N) ->
+ (econf:and_then(
+ econf:int(0, 5),
+ fun ejabberd_logger:convert_loglevel/1))(N);
+ (Level) ->
+ (econf:enum([none, emergency, alert, critical,
+ error, warning, notice, info, debug]))(Level)
+ end;
opt_type(max_fsm_queue) ->
econf:pos_int();
opt_type(modules) ->
@@ -424,6 +425,7 @@ opt_type(jwt_auth_only_rule) ->
{websocket_origin, [binary()]} |
{disable_sasl_mechanisms, [binary()]} |
{s2s_zlib, boolean()} |
+ {loglevel, none | logger:level()} |
{listen, [ejabberd_listener:listener()]} |
{modules, [{module(), gen_mod:opts(), integer()}]} |
{ldap_uids, [{binary(), binary()}]} |
@@ -443,7 +445,7 @@ opt_type(jwt_auth_only_rule) ->
options() ->
[%% Top-priority options
hosts,
- {loglevel, 4},
+ {loglevel, info},
{cache_life_time, timer:seconds(3600)},
{cache_missed, true},
{cache_size, 1000},
@@ -527,10 +529,8 @@ options() ->
{ldap_tls_verify, false},
{ldap_uids, [{<<"uid">>, <<"%u">>}]},
{listen, []},
- {log_rate_limit, undefined},
- {log_rotate_count, undefined},
- {log_rotate_date, undefined},
- {log_rotate_size, undefined},
+ {log_rotate_count, 1},
+ {log_rotate_size, 10*1024*1024},
{max_fsm_queue, undefined},
{modules, []},
{negotiation_timeout, timer:seconds(30)},
@@ -669,9 +669,7 @@ globals() ->
host_config,
listen,
loglevel,
- log_rate_limit,
log_rotate_count,
- log_rotate_date,
log_rotate_size,
negotiation_timeout,
net_ticktime,
diff --git a/src/ejabberd_system_monitor.erl b/src/ejabberd_system_monitor.erl
index ff9903b42..7e7e52b8e 100644
--- a/src/ejabberd_system_monitor.erl
+++ b/src/ejabberd_system_monitor.erl
@@ -36,9 +36,7 @@
-export([init/1, handle_event/2, handle_call/2,
handle_info/2, terminate/2, code_change/3]).
-%% We don't use ejabberd logger because lager can be overloaded
-%% too and alarm_handler may get stuck.
-%%-include("logger.hrl").
+-include("logger.hrl").
-define(CHECK_INTERVAL, timer:seconds(30)).
@@ -93,7 +91,7 @@ handle_event({clear_alarm, system_memory_high_watermark}, State) ->
handle_event({set_alarm, {process_memory_high_watermark, Pid}}, State) ->
case proc_stat(Pid, get_app_pids()) of
#proc_stat{name = Name} = ProcStat ->
- error_logger:warning_msg(
+ ?WARNING_MSG(
"Process ~p consumes more than 5% of OS memory (~ts)~n",
[Name, format_proc(ProcStat)]),
handle_overload(State),
@@ -104,7 +102,7 @@ handle_event({set_alarm, {process_memory_high_watermark, Pid}}, State) ->
handle_event({clear_alarm, process_memory_high_watermark}, State) ->
{ok, State};
handle_event(Event, State) ->
- error_logger:warning_msg("unexpected event: ~p~n", [Event]),
+ ?WARNING_MSG("unexpected event: ~p~n", [Event]),
{ok, State}.
handle_call(_Request, State) ->
@@ -114,7 +112,7 @@ handle_info({timeout, _TRef, handle_overload}, State) ->
handle_overload(State),
{ok, restart_timer(State)};
handle_info(Info, State) ->
- error_logger:warning_msg("unexpected info: ~p~n", [Info]),
+ ?WARNING_MSG("unexpected info: ~p~n", [Info]),
{ok, State}.
terminate(_Reason, _State) ->
@@ -137,7 +135,7 @@ handle_overload(_State, Procs) ->
MaxMsgs = ejabberd_option:oom_queue(),
if TotalMsgs >= MaxMsgs ->
SortedStats = lists:reverse(lists:keysort(#proc_stat.qlen, Stats)),
- error_logger:warning_msg(
+ ?WARNING_MSG(
"The system is overloaded with ~b messages "
"queued by ~b process(es) (~b%) "
"from the following applications: ~ts; "
@@ -272,7 +270,7 @@ do_kill(Stats, Threshold) ->
when Len >= Threshold ->
case lists:member(App, excluded_apps()) of
true ->
- error_logger:warning_msg(
+ ?WARNING_MSG(
"Unable to kill process ~p from whitelisted "
"application ~p~n", [Name, App]),
false;
@@ -289,7 +287,7 @@ do_kill(Stats, Threshold) ->
end, Stats),
TotalKilled = length(Killed),
if TotalKilled > 0 ->
- error_logger:error_msg(
+ ?ERROR_MSG(
"Killed ~b process(es) consuming more than ~b message(s) each~n",
[TotalKilled, Threshold]);
true ->
diff --git a/src/mod_pubsub.erl b/src/mod_pubsub.erl
index ca99a21ef..0063df8d9 100644
--- a/src/mod_pubsub.erl
+++ b/src/mod_pubsub.erl
@@ -367,16 +367,13 @@ depends(ServerHost, Opts) ->
%% <p>See {@link node_hometree:init/1} for an example implementation.</p>
init_plugins(Host, ServerHost, Opts) ->
TreePlugin = tree(Host, mod_pubsub_opt:nodetree(Opts)),
- ?DEBUG("** tree plugin is ~p", [TreePlugin]),
TreePlugin:init(Host, ServerHost, Opts),
Plugins = mod_pubsub_opt:plugins(Opts),
PepMapping = mod_pubsub_opt:pep_mapping(Opts),
- ?DEBUG("** PEP Mapping : ~p~n", [PepMapping]),
PluginsOK = lists:foldl(
fun (Name, Acc) ->
Plugin = plugin(Host, Name),
apply(Plugin, init, [Host, ServerHost, Opts]),
- ?DEBUG("** init ~ts plugin", [Name]),
[Name | Acc]
end,
[], Plugins),
@@ -385,7 +382,6 @@ init_plugins(Host, ServerHost, Opts) ->
terminate_plugins(Host, ServerHost, Plugins, TreePlugin) ->
lists:foreach(
fun (Name) ->
- ?DEBUG("** terminate ~ts plugin", [Name]),
Plugin = plugin(Host, Name),
Plugin:terminate(Host, ServerHost)
end,