如何在MongooseIM中添加日志?使用lager-logging后API无法运行如何解决
MongooseIM 正确添加 lager 日志的操作指南
标准操作步骤
- 首先在需要输出日志的模块顶部引入 lager 头文件,代码为:
-include_lib("lager/include/lager.hrl").
如果是使用 MongooseIM 封装的统一日志接口,引入头文件:-include_lib("kernel/include/logger.hrl"). - 根据需要输出的日志级别调用对应宏,常用日志级别从低到高为 debug、info、warning、error,示例用法:
?LOG_INFO("自定义API收到请求,请求参数:~p", [RequestParams])?LOG_ERROR("自定义API处理失败,错误原因:~p,用户ID:~p", [ErrorReason, UserId])
注意:日志字符串中的占位符~p数量必须和后方参数列表的元素数量完全匹配,不匹配会直接触发进程崩溃 - 修改
mongooseim.toml配置文件,调整日志级别配置,示例如下:
[log] level = "info" ## 单独配置自定义模块的日志级别 module_levels = [ {module = "my_custom_api_mod", level = "debug"} ]
如果是旧版本使用.cfg格式配置,对应配置项为:{lager_log_level, [{module, my_custom_api_mod, debug}]}.
- 配置修改完成后,先执行命令
mongooseimctl config test验证配置语法合法性,确认无报错后再执行mongooseimctl reload_config重载配置,无需重启整个服务。
API 停止运行的常见排查方案
- 验证日志宏参数是否匹配:如果日志字符串占位符数量和参数列表元素数量不一致,会触发进程 crash,对应 API 直接停止响应,可查看 MongooseIM 默认错误日志确认是否有 badarg 类报错。
- 验证配置文件语法:未通过合法性校验的配置重载后会导致服务逻辑异常,按照
mongooseimctl config test的报错提示修正配置即可恢复。 - 验证模块依赖是否完整:自定义模块的
rebar.config中需要确认已经添加 lager 依赖,未引入依赖会导致调用日志宏时触发 undef 错误,直接终止进程。
内容的提问来源于stack exchange,提问作者Rahib Rasheed
相关产品推荐
相关产品推荐

