首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ejabberd调试

Ejabberd调试
EN

Stack Overflow用户
提问于 2015-09-12 18:09:02
回答 3查看 2.4K关注 0票数 1

我想对我正在处理的Ejabberd模块进行一些调试;但是,当我在Windows上工作时,我必须做的最好的选择就是通过日志记录。

我不能让伐木工作。但是,我在使用error_logger:warning_msg("here!"),但是在日志中看不到这一点。

我检查了ejabberd.logerror.log

欢迎为ejabberd进行任何调试或日志记录。正如我已经说过的,我正在开发Windows。

更新

我更改了我的代码,现在看起来如下:

代码语言:javascript
复制
start(Host, Opts) ->
    ?DEBUG("Starting: ~p ~p", [Host, Opts]),
    Proc = gen_mod:get_module_proc(Host, ?MODULE),
    ChildSpec = {
        Proc,
        {?MODULE, start_link, [Host, Opts]},
        transient,
        1000,
        worker,
        [?MODULE]
    },
    supervisor:start_child(ejabberd_sup, ChildSpec).

但我发现了这个错误

代码语言:javascript
复制
2015-09-14 17:01:11.863 [critical] <0.37.0>@gen_mod:start_module:107 Problem starting the module mod_restful for host <<"fernando">> 
 options: [{api,[[{path,[<<"admin">>]},
                  {module,mod_restful_admin},
                  {params,[{key,<<"secret">>},
                           {allowed_commands,[register,unregister]}]}],
                 [{path,[<<"register">>]},
                  {module,mod_restful_register},
                  {params,[{key,<<"secret">>}]}]]}]
 error: undef
[{p1_logger,debug_msg,[mod_restful,80,"Starting: ~p ~p",["fer","fer"]],[]},
 {mod_restful,start,2,
              [{file,"d:/Sites/mod_restful/src/mod_restful.erl"},{line,80}]},
 {gen_mod,start_module,3,[{file,"src/gen_mod.erl"},{line,99}]},
 {lists,foreach,2,[{file,"lists.erl"},{line,1336}]},
 {ejabberd_app,start,2,[{file,"src/ejabberd_app.erl"},{line,72}]},
 {application_master,start_it_old,4,
                     [{file,"application_master.erl"},{line,272}]}]
2015-09-14 17:01:11.863 [critical] <0.37.0>@gen_mod:start_module:112 ejabberd initialization was aborted because a module start failed.
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-17 05:49:10

添加后工作良好

代码语言:javascript
复制
-ifndef(LAGER).
-define(LAGER, 1).
-endif.

在包括图书馆之前:

代码语言:javascript
复制
-include("ejabberd.hrl").
-include("logger.hrl").
-include("jlib.hrl").

默认情况下,debug不起作用,只有infowarningerrorcritical

代码语言:javascript
复制
?DEBUG("Starting: ~p ~p", [Host, Opts]),
?INFO_MSG("Starting: ~p ~p", [Host, Opts]),
?WARNING_MSG("Starting: ~p ~p", [Host, Opts]),
?ERROR_MSG("Starting: ~p ~p", [Host, Opts]),
?CRITICAL_MSG("Starting: ~p ~p", [Host, Opts]),
票数 1
EN

Stack Overflow用户

发布于 2015-09-14 15:34:33

我刚刚尝试通过本地ejabberd安装,它正确地出现在ejabberd.log文件中:

代码语言:javascript
复制
2015-09-14 17:30:20.819 [warning] <0.36.0> here!

但是,请注意ejabberd约定使用宏,如下所示:

代码语言:javascript
复制
?DEBUG(Format, Args).
?INFO_MSG(Format, Args).
?WARNING_MSG(Format, Args).
?ERROR_MSG(Format, Args).
?CRITICAL_MSG(Format, Args).

它与多个记录器后端(如lager)兼容,并与您在ejabberd中设置的错误级别友好。

票数 0
EN

Stack Overflow用户

发布于 2017-08-07 06:24:46

您必须包括“-include(”logger.hrl“)”。到你舱的顶端。这只会告诉ejabberd的宏定义。

还可以使用"ejabberdctl set_loglevel 4“命令在运行时更改调试级别。

日志级别为: 0:没有ejabberd日志。

代码语言:javascript
复制
1: Critical
代码语言:javascript
复制
2: Error
代码语言:javascript
复制
3: Warning
代码语言:javascript
复制
4: Info
代码语言:javascript
复制
5: Debug
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32542102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档