浏览 SDKs · Android
SDKsAndroid

日志

配置 Android SDK 日志、写入应用诊断信息并上传日志。

复制

OpenIM Android SDK 日志用于定位初始化、连接和业务 API 调用问题。开发和预发布环境可以输出较详细的信息;生产环境应减少日志量,并避免记录 Token、完整消息正文、原始文件 URL、通话房间凭据和用户隐私字段。

初始化日志配置

在调用 initSDK() 时配置日志:

File dataDirectory = new File(application.getFilesDir(), "openim");
File logDirectory = new File(application.getFilesDir(), "openim-logs");

InitConfig config = new InitConfig(
    apiAddr,
    wsAddr,
    dataDirectory.getAbsolutePath()
);
config.logLevel = BuildConfig.DEBUG ? LogLevel.Debug : LogLevel.Warn;
config.isLogStandardOutput = BuildConfig.DEBUG;
config.logFilePath = logDirectory.getAbsolutePath();

boolean initialized = OpenIMClient.getInstance().initSDK(
    application,
    config,
    connectionListener
);
字段说明
logLevel使用 LogLevel 常量控制详细程度。可选值包括 DebugWithSQLDebugInfoWarnErrorPanicFatal
isLogStandardOutput是否把 SDK 日志输出到 Android 标准日志;开发诊断时开启。
logFilePath可选日志目录,应位于应用可写范围并纳入容量与保留期管理。

开发诊断可以使用 Debug;只有排查数据库问题时才临时启用 DebugWithSQL。生产环境通常使用 WarnError,并关闭不必要的标准输出。

写入应用日志

需要把业务日志写入 SDK 日志时,使用 logs()

OpenIMClient.getInstance().logs(
    LogLevel.Error,
    ChatRepository.class.getSimpleName(),
    184,
    "send_message_failed",
    errorMessage,
    "conversationID", conversationID,
    "clientMsgID", clientMsgID
);

currentClassNamecurrentLineNum 用于定位调用位置,msgStr 是简短动作描述,errStr 是错误信息。WarnErrorPanicFatal 级别必须提供非空错误信息。末尾的 extra 按“键、值”成对传入;只记录排查所需的非敏感标识。

旧版带 OnBase<String>Map 参数的 logs() 重载已经废弃,不应在新代码中使用。

上传日志

uploadLogs() 可将客户端日志上传至服务器,主要使用场景是用户主动提交诊断日志。

String cancelID = UUID.randomUUID().toString();

OpenIMClient.getInstance().uploadLogs(
    new OnBase<String>() {
        @Override
        public void onSuccess(String data) {
            // 日志上传请求已完成。
        }

        @Override
        public void onError(int code, String error) {
            // code 和 error 说明失败原因。
        }
    },
    new ArrayList<>(),
    2000, // line
    cancelID,
    "support-ticket-42", // ex
    new UploadLogProgress() {
        @Override
        public void onProgress(long current, long total) {
            // current 和 total 表示上传进度。
        }
    }
);
参数说明
params历史遗留参数,当前 SDK 不使用;传入空列表,例如 new ArrayList<>()
line本次上传读取的日志行数配置。
cancelID本次上传的稳定标识,可使用业务生成的 UUID。
ex附加到上传任务的诊断说明,例如工单 ID;不能包含凭据或隐私数据。
UploadLogProgress提供当前进度和总量,用于更新上传界面。

成功 callback 表示本次日志上传请求完成。

排查问题或向技术支持提供日志时,同时说明发生时间、用户 ID、操作名称,以及必要的 conversationIDclientMsgIDgroupIDroomID。这些非敏感业务标识有助于定位对应记录,但不能替代完整日志。

相关页面