浏览 SDKs · Flutter
平台
SDKsFlutter

日志

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

复制

OpenIM Flutter SDK 日志用于定位初始化、连接和业务 API 调用问题。初始化参数可以控制日志级别、标准输出和日志文件路径。

初始化日志配置

Flutter SDK 在 initSDK() 时配置日志,而不是在 login() 时配置。

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。不要把 Android 平台值硬编码到 iOS 构建中。

参数说明
logLevelSDK 日志级别数字,默认值为 6
isLogStandardOutput是否输出到平台标准日志。
logFilePath可选日志文件路径,需要位于应用可写目录。

日志级别越详细,产生的日志内容越多。日志目录受平台文件权限与生命周期约束。

写入与上传日志

await OpenIM.iMManager.logs(
  logLevel: 5,
  file: 'chat_repository.dart',
  line: 120,
  msgs: 'load conversation page failed',
  err: error.toString(),
  keyAndValues: ['conversationID', conversationID],
);

可以监听上传进度并调用 uploadLogs()

OpenIM.iMManager.setUploadLogsListener(
  OnUploadLogsListener(
    onUploadProgress: (current, size) {
      updateLogUploadProgress(current, size);
    },
  ),
);

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

setUploadLogsListener() 保存的是 manager 级 singleton listener,后一次设置会覆盖前一次。SDK 没有 remove 或 unset API,因此应在应用统一的 SDK 绑定层设置一次,并由该层把进度分发给当前界面;切换账号时可清空应用层订阅和上一账号的上传状态。

uploadLogs() 的 Future 成功表示本次日志上传请求已完成。