IM日志格式说明

发布时间:2018年8月10日 更新时间:2018年8月10日 贡献者:jansonjiang

IMSDK 新版本整理关键路径上的日志格式,方便开发者根据指引自查一些常见问题,通用的日志格式如下:

事件|阶段|成功|成功获取到的关键信息
事件|阶段|失败|code=错误码, msg=错误信息
事件|阶段|失败|msg=错误描述

通用格式前面会有文件名行号等信息,可直接搜索事件|过滤关键字,比如登录相关事件可搜索Login|

IMSDK 1.9.2 以后版本整理:初始化、登录、登出、被踢
IMSDK 2.0.0 以后版本整理:发消息、收消息

确定正在使用的版本,ImSDK 1.9.2 之前查看版本信息:
Android: 搜welcome
iOS:搜 InitSDK Versioin

ImSDK 1.9.2 之后查版本信息:

搜:InitSdk|1-Init|Succ|version=


事件类型

初始化

InitSdk|1-Init|Succ|version=xx, sdkappid=xx, msfappid=xx

可搜索 InitSdk|1-Init 来过滤日志,可查看当前使用版本等信息。

登录

成功的登录流程:

Login|1-Begin|Succ|identifer=xx, sdkappid=xx, ...
Login|2-Ticket|Succ|tinyid=xxx
Login|3-Online|Succ|
Login|4-InitIMCore|Succ|
Login|5-Callback|Succ|call user login succ
步骤 说明
1-Begin 调用入口打印用户传入参数,usersig 不打印
2-Ticket 换票成功打印tinyid和identifier
3-Online 上线成功打印
4-InitIMCore IMCore初始化成功打印
5-Callback 回调用户打印,用户如果没有设置回调,打印失败

开发者只需要关心 1-Begin5-Callback 即可。

失败示例:

Login|1-Begin|Fail|identifier=nil
Login|3-Online|Fail|code=6208, msg=kick off by other device
Login|5-Callback|Fail|msg=user not set succ callback

登出

成功的登录流程:

Logout|1-Begin|Succ|
Logout|2-Callback|Succ|
步骤 说明
1-Begin 调用入口打印
2-Callback 回调用户打印,用户如果没有设置回调,打印失败,说明

被踢

被踢正常流程:

ForceOffline|1-Recv|Succ|recv cmd im_open_status.stat_forceoffline
ForceOffline|2-Logout|Succ|
ForceOffline|3-Callback|Succ|call user forceoffline callback
步骤 说明
1-Recv 从QAL收到被踢消息
2-Logout 内部Logout成功
3-Callback 回调用户,如果用户没有设置,打印失败

失败示例:

ForceOffline|3-Callback|Fail|msg=user not set forceoffline callback

开发者只需要关注 3-Callback

发消息

正常流程:

SendMsg|1-Begin|Succ|type=1, conversation=123
SendMsg|2-Upload|Succ|
SendMsg|3-TinyIdCvt|Succ|
SendMsg|4-Send|Succ|
SendMsg|5-Callback|Succ|code=%d, msg=%s

其中有资源上传(如图片、文件、语音、视频消息)的会打印 2-Upload,标识上传资源是否成功,纯文本没有此阶段。 单聊消息会打印 3-TinyIdCvt,群消息没有这个步骤,不会打印

开发者只需要关注:1-Begin 表示是否有调用SendMessage方法,5-Callback 表示是否有回调给上层成功或者失败。

收在线消息

RecvMsg|1-OnlinePush|Succ|
RecvMsg|2-IMBegin|Succ|msgtype=%d, subtype=%d
RecvMsg|3-ParseOver|Succ|C2C or GRP:sid=%s, subtype=%s...
RecvMsg|CheckDup|
RecvMsg|4-Callback|Succ|
步骤 说明
1-OnlinePush 收到OnlinePush,msgtype,subtype,PB二进制,Debug级别
2-IMBegin imcore 开始处理消息,打印收到的命令字,可判断是群组消息还是c2c消息
3-ParseOver 消息解析完成,打印详细消息信息,如seq,rand等
CheckDup 去重,如果有去重会打印
4-Callback 回调用户,如果用户没有设置,打印失败

开发者只需要关注:RecvMsg|4-Callback,表示收到消息后回调给上层。

收AVChatRoom消息

AVChatRoom 收消息机制跟其他消息不同,可先检查最后几步:

RecvMsg|3-ParseOver|Succ|C2C or GRP:sid=%s, subtype=%s...
RecvMsg|CheckDup|
RecvMsg|4-Callback|Succ|

开发者只需要关注:RecvMsg|4-Callback,表示收到消息后回调给上层。

加群

JoinGroup|1-Begin|Succ|group id=%s
JoinGroup|2-Send|Succ|group id=%s
JoinGroup|3-Callback|Succ|code=%d, msg=%s

说明:

步骤 说明
1-Begin 用户调用JoinGroup
2-Send 发加群的请求给server
3-Callback 回调用户

创建群组

CreateGroup|1-Begin|Succ|
CreateGroup|2-Send|Succ|groupid=%s

常见问题排查

收不到消息

检查项 说明
检查是否出于登录状态 根据客户端日志登录、被踢确定
群消息:检查是否是群成员 群组是否解散、是否有加群等
是否有接收消息 根据收在线消息确定是否有收到消息,是否有回调给用户两个点确定

是否被踢

根据被踢章节判断是否有收到server下来的被踢消息,是否有回调给用户

收到重复消息

收到消息回调给用户之前都会打印:RecvMsg|4-Callback,可通过此日志判断是否有回调给用户多次。例如,按照关键词过滤,抛出4条消息的日志:

[16-08-30 16:41:48][INFO][][IMCoreNotify]RecvMsg|4-Callback|Succ|type=C2C, sid=108220141, msgid=164147849, seq=1068038125, rand=164147849, time=1472546507, isRead=true
[16-08-30 16:41:48][INFO][][IMCoreNotify]RecvMsg|4-Callback|Succ|type=C2C, sid=108220109, msgid=164147761, seq=185633201, rand=164147761, time=1472546507, isRead=true
[16-08-30 16:41:49][INFO][][IMCoreNotify]RecvMsg|4-Callback|Succ|type=C2C, sid=108219803, msgid=164147671, seq=280898683, rand=164147671, time=1472546507, isRead=true
[16-08-30 16:41:49][INFO][][IMCoreNotify]RecvMsg|4-Callback|Succ|type=C2C, sid=108219917, msgid=164147946, seq=376583928, rand=164147946, time=1472546508, isRead=true

关键字说明

说明 关键字
版本查询 Versioin
推送 im_open_push.msg_push
离线推送 OfflinePush
在线推送 OnlinePush
收到消息 RecvMsg
未读数 UpdateMsgReadedSeq
未读上报 msg_unread
用户掉线 sso_conn.cc
版本查询 Versioin
发送群消息 group_open_svc.group_msg_send
接收群消息 group_open_svc.group_msg_report
查询用户资料 Profile.PortraitGet_PB
查询会话列表 Recentcontact.Get_PB

results matching ""

    No results matching ""