You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 14:15:02