SDKsFlutter
日志
配置 OpenIM Flutter SDK 日志,写入应用诊断信息并上传日志。
OpenIM Flutter SDK 日志系统用于排查 SDK 初始化、长连接建立和业务调用过程中的异常问题。可以在初始化时配置日志级别、控制台输出和日志文件路径,支持在业务代码中写入诊断日志,并在需要时上传日志文件至服务端。
初始化日志配置
Flutter SDK 的日志策略在 SDK 初始化阶段配置,而非在登录阶段配置。
参数说明
在初始化方法中配置以下日志参数:
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
logLevel | int | 否 | SDK 日志输出级别数字,数值越小日志越详细。默认值为 6。 |
isLogStandardOutput | bool | 否 | 是否将日志同步输出至系统控制台或调试终端。 |
logFilePath | String? | 否 | 自定义本地日志存储文件路径,必须位于当前平台的应用可写沙盒目录。 |
import 'dart:io';
final platformID = Platform.isIOS
? IMPlatform.ios
: IMPlatform.android;
await OpenIM.iMManager.initSDK(
platformID: platformID,
apiAddr: apiAddr,
wsAddr: wsAddr,
dataDir: dataDir,
listener: connectListener,
logLevel: 5,
isLogStandardOutput: true,
logFilePath: logFilePath,
);示例面向 Flutter 的 Android 与 iOS 运行环境:Android 平台需传入 IMPlatform.android,iOS 平台需传入 IMPlatform.ios。
写入自定义诊断日志
可以在业务层将关键链路的异常或调试信息写入 SDK 的本地日志系统中,以便与底层事件联动排查:
参数说明
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
logLevel | int | 否 | 当前日志的级别数字。 |
file | String | 是 | 产生该日志的文件名或模块名。 |
line | int | 是 | 触发日志输出的代码行号。 |
msgs | String | 是 | 日志主体描述文本。 |
err | String? | 否 | 捕获到的错误对象或异常堆栈文本。 |
keyAndValues | List<dynamic>? | 否 | 结构化参数列表,按键值对交替排列(如 ['key1', 'val1'])。 |
await OpenIM.iMManager.logs(
logLevel: 5,
file: 'chat_repository.dart',
line: 120,
msgs: 'load conversation page failed',
err: error.toString(),
keyAndValues: ['conversationID', conversationID],
);返回结果
Future 成功返回 void,表示该条日志已成功写入本地日志缓冲区。
监听与上传日志
当用户在客户端触发“问题反馈”或需要远程排查故障时,可以调用上传日志接口将本地日志文件上传至服务器:
参数说明
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
ex | String? | 否 | 上传原因或业务诊断备注信息。 |
OpenIM.iMManager.setUploadLogsListener(
OnUploadLogsListener(
onUploadProgress: (current, size) {
updateLogUploadProgress(current, size);
},
),
);
await OpenIM.iMManager.uploadLogs(ex: 'user initiated diagnostics');返回结果
Future 成功返回 void,表示本次日志上传流程已顺利启动并完成传输。
SDK 内部仅维护单个 OnUploadLogsListener 实例,后设置的监听器会覆盖先前的实例。请在应用统一的诊断服务层注册一次,并由该层向 UI 视图分发上传进度;切换账号时应及时清空上传任务状态。
这个页面有帮助吗?