完成以下步骤进行 iOS 客户端诊断:
初始化诊断服务
诊断功能在使用之前需要进行初始化:
#import <MPDiagnosis/MPDiagnoseAdapter.h>
[MPDiagnoseAdapter initDiagnose];
诊断服务支持使用 移动同步 或 消息推送 方式拉取诊断日志,两种方式的初始化代码不同。
移动同步方式初始化
若采用移动同步的方式拉取诊断日志,则在使用诊断功能之前需要进行初始化。
#import <MPDiagnosis/MPDiagnoseAdapter.h>
[MPDiagnoseAdapter initDiagnose];
消息推送方式初始化
您需要先接入消息推送组件,完成 消息推送初始化。然后,在接收到消息推送之后,进行如下方法调用:
#import <APLog/APLogMgr.h>
[[APLogMgr sharedInstance] handlePushDiagnosisCmd:[notification.userInfo objectForKey:@"content"]];
旧版本升级注意事项
10.1.32 版本之后不再需要添加 APLogUser
类的 Category
文件,中间层会实现包装,升级版本后请检查工程中是否存在旧版本配置,如果有请移除。下面为新版本应移除的配置。
设置用户 ID
诊断服务根据 用户 ID 拉取日志。
在
MPaaSInterface
的实现中通过userId
函数配置用户 ID。当用户切换时,即
MPaaSInterface
的userId
函数中配置的值发生变化时,调用以下函数:[MPDiagnoseAdapter userChange];
详情可参考
MPDiagnosis
下的MPDiagnoseAdapter.h
文件。
写诊断日志
调用以下方法在 App 关键链路写诊断日志:
/**
* Log a message with kAPLogLevelInfo level.
*
* @param message An NSString object that contains a printf-style string containing a log message and placeholders for the arguments.
* @param ... The arguments displayed in the format string.
*/
#define APLogInfo(tag,fmt, ...) \
APLogToFile(tag, kAPLogLevelInfo, fmt, ##__VA_ARGS__)
详情可参考 APLog
下的 APLog.h
文件。
例如,可以在启动完成后,调用下面的语句进行诊断日志的写入:
APLogInfo(@"mPaaS", @"Start Cost %d", time);
APLogInfo 写入的日志默认不会在 Xcode 控制台打印,若希望在开发阶段控制台打印相关日志,可以在工程中添加 ConsoleLog 文件。
出于安全考虑,若您希望应用上线后不打印任何日志(包括 NSLog 和 APLogInfo 打印的日志),可在生成应用 release 包时在工程中添加 RemoveNSLog 文件。
查看本地诊断日志
您可以在沙盒目录下找到诊断日志,如下图所示。该日志默认不会上报,只有在需要时才通过控制台下发指令拉取。
保存期限: 默认保留 6 天。如果检测到前 3 天的日志文件总大小超过 30 MB,前 3 天的日志都会被删除。
文件大小限制:默认不超过 100 MB。超过 100 MB 后,会按时间顺序从前到后删除前一半大小的日志。例如有 120 MB 的日志,会删除 60 MB。
获取在线用户诊断日志
应用发布上线后,要获取客户端本地诊断日志排查问题,可通过 mPaaS 控制台下发指令获取相关诊断日志。具体操作,查看 移动分析 > 日志拉取。