aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_logger.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2013-04-08 11:12:54 +0200
committerChristophe Romain <christophe.romain@process-one.net>2013-06-13 11:11:02 +0200
commit4d8f7706240a1603468968f47fc7b150b788d62f (patch)
tree92d55d789cc7ac979b3c9e161ffb7f908eba043a /src/ejabberd_logger.erl
parentFix Guide: ejabberd_service expects a shaper_rule, not a shaper (diff)
Switch to rebar build tool
Use dynamic Rebar configuration Make iconv dependency optional Disable transient_supervisors compile option Add hipe compilation support Only compile ibrowse and lhttpc when needed Make it possible to generate an OTP application release Add --enable-debug compile option Add --enable-all compiler option Add --enable-tools configure option Add --with-erlang configure option. Add --enable-erlang-version-check configure option. Add lager support Improve the test suite
Diffstat (limited to 'src/ejabberd_logger.erl')
-rw-r--r--src/ejabberd_logger.erl70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/ejabberd_logger.erl b/src/ejabberd_logger.erl
new file mode 100644
index 000000000..afb1f3f3d
--- /dev/null
+++ b/src/ejabberd_logger.erl
@@ -0,0 +1,70 @@
+%%%-------------------------------------------------------------------
+%%% @author Evgeniy Khramtsov <ekhramtsov@process-one.net>
+%%% @copyright (C) 2013, Evgeniy Khramtsov
+%%% @doc
+%%%
+%%% @end
+%%% Created : 12 May 2013 by Evgeniy Khramtsov <ekhramtsov@process-one.net>
+%%%-------------------------------------------------------------------
+-module(ejabberd_logger).
+
+%% API
+-export([start/0, set_logfile/1, reopen_log/0, get/0, set/1,
+ debug_msg/4, info_msg/4, warning_msg/4, error_msg/4,
+ critical_msg/4]).
+
+%%%===================================================================
+%%% API
+%%%===================================================================
+start() ->
+ ok.
+
+set_logfile(FileName) ->
+ error_logger:add_report_handler(p1_logger_h, FileName).
+
+reopen_log() ->
+ %% TODO: Use the Reopen log API for logger_h ?
+ p1_logger_h:reopen_log(),
+ case application:get_env(sasl,sasl_error_logger) of
+ {ok, {file, SASLfile}} ->
+ error_logger:delete_report_handler(sasl_report_file_h),
+ p1_logger_h:rotate_log(SASLfile),
+ error_logger:add_report_handler(sasl_report_file_h,
+ {SASLfile, get_sasl_error_logger_type()});
+ _ -> false
+ end,
+ ok.
+
+get() ->
+ p1_loglevel:get().
+
+set(LogLevel) ->
+ p1_loglevel:set(LogLevel).
+
+debug_msg(Mod, Line, Format, Args) ->
+ p1_logger:debug_msg(Mod, Line, Format, Args).
+
+info_msg(Mod, Line, Format, Args) ->
+ p1_logger:info_msg(Mod, Line, Format, Args).
+
+warning_msg(Mod, Line, Format, Args) ->
+ p1_logger:warning_msg(Mod, Line, Format, Args).
+
+error_msg(Mod, Line, Format, Args) ->
+ p1_logger:error_msg(Mod, Line, Format, Args).
+
+critical_msg(Mod, Line, Format, Args) ->
+ p1_logger:critical_msg(Mod, Line, Format, Args).
+
+%%%===================================================================
+%%% Internal functions
+%%%===================================================================
+%% Function copied from Erlang/OTP lib/sasl/src/sasl.erl which doesn't export it
+get_sasl_error_logger_type () ->
+ case application:get_env (sasl, errlog_type) of
+ {ok, error} -> error;
+ {ok, progress} -> progress;
+ {ok, all} -> all;
+ {ok, Bad} -> exit ({bad_config, {sasl, {errlog_type, Bad}}});
+ _ -> all
+ end.