浏览 SDKs · Android
平台
SDKsAndroid

日志

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

复制

OpenIM Android SDK 日志用于定位初始化、连接和业务 API 调用问题。可以通过初始化配置控制日志级别、标准输出和日志目录。

初始化日志配置

在初始化 SDK 时配置日志:

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 常量控制详细程度。可选值包括 DebugWithSQL、Debug、Info、Warn、Error、Panic 和 Fatal。
isLogStandardOutput是否把 SDK 日志输出到 Android 标准日志。
logFilePath可选日志目录,需要位于应用可写范围。

DebugWithSQL 会包含数据库调试信息,Debug、Info、Warn 和 Error 等级依次减少输出内容。应用可以根据排查范围选择日志级别。

写入应用日志

需要把业务诊断日志写入 SDK 日志文件时,可调用写入日志接口:

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

currentClassName 和 currentLineNum 用于定位调用位置,msgStr 是简短动作描述,errStr 是错误信息。Warn、Error、Panic 和 Fatal 级别必须提供非空错误信息。末尾的 extra 按“键、值”成对传入。

历史版本中带回调与 Map 参数的重载形式已废弃,新接入代码应统一使用上述参数模式。

上传日志

当用户遇到异常或需要上报排查信息时,可将客户端本地日志上传至服务端:

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 表示上传进度。
        }
    }
);

参数说明

参数类型是否必填说明
baseOnBase<String>是异步请求回调。
paramsList<String>否历史遗留参数,当前 SDK 不使用,传入空列表即可,如 new ArrayList<>()。
lineint是本次上传读取的日志行数。
cancelIDString是本次上传的任务标识,可使用随机 UUID。
exString否附加到上传任务的业务说明,例如工单号。
UploadLogProgressUploadLogProgress否上传进度监听器,提供当前已上传与总量信息。

返回结果

成功回调表示本次日志上传请求完成。上传完成后,可结合发生时间、操作名称以及 conversationID、clientMsgID、groupID 或 roomID 进行排查与链路定位。

相关页面