浏览 SDKs · Flutter
平台
SDKsFlutter

日志

配置 OpenIM Flutter SDK 日志,写入应用诊断信息并上传日志。

复制

OpenIM Flutter SDK 日志系统用于排查 SDK 初始化、长连接建立和业务调用过程中的异常问题。可以在初始化时配置日志级别、控制台输出和日志文件路径,支持在业务代码中写入诊断日志,并在需要时上传日志文件至服务端。

初始化日志配置

Flutter SDK 的日志策略在 SDK 初始化阶段配置,而非在登录阶段配置。

参数说明

在初始化方法中配置以下日志参数:

参数类型是否必填说明
logLevelint否SDK 日志输出级别数字,数值越小日志越详细。默认值为 6。
isLogStandardOutputbool否是否将日志同步输出至系统控制台或调试终端。
logFilePathString?否自定义本地日志存储文件路径,必须位于当前平台的应用可写沙盒目录。
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 的本地日志系统中,以便与底层事件联动排查:

参数说明

参数类型是否必填说明
logLevelint否当前日志的级别数字。
fileString是产生该日志的文件名或模块名。
lineint是触发日志输出的代码行号。
msgsString是日志主体描述文本。
errString?否捕获到的错误对象或异常堆栈文本。
keyAndValuesList<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,表示该条日志已成功写入本地日志缓冲区。

监听与上传日志

当用户在客户端触发“问题反馈”或需要远程排查故障时,可以调用上传日志接口将本地日志文件上传至服务器:

参数说明

参数类型是否必填说明
exString?否上传原因或业务诊断备注信息。
OpenIM.iMManager.setUploadLogsListener(
  OnUploadLogsListener(
    onUploadProgress: (current, size) {
      updateLogUploadProgress(current, size);
    },
  ),
);

await OpenIM.iMManager.uploadLogs(ex: 'user initiated diagnostics');

返回结果

Future 成功返回 void,表示本次日志上传流程已顺利启动并完成传输。

SDK 内部仅维护单个 OnUploadLogsListener 实例,后设置的监听器会覆盖先前的实例。请在应用统一的诊断服务层注册一次,并由该层向 UI 视图分发上传进度;切换账号时应及时清空上传任务状态。