快速开始
更新时间:2025-04-09
简介
本文档主要介绍百度云日志服务 Android SDK 的安装和使用
本文档假设您已经开通了百度智能云日志服务
如果您还没有开通或者还不了解日志服务,请登录 日志服务产品主页 获取更多的帮助。
环境要求
- Android 系统版本:2.3 及以上
- 必须注册有百度智能云用户账户,并开通日志服务
安装 SDK 包
日志服务 Android SDK 依赖于 OKhttp,gson。
安装步骤
- 在 百度智能云开发者中心 的客户端 SDK 列表找到百度日志服务,下载 SDK 压缩包。
- 解压得到 jar 包。目前 jar 包应该包含三个文件,分别是:bls-android-sdk-1.X.X.jar、okhttp-3.x.x.jar 和 gson-2.x.x.jar。
- 将 jar 包复制到您的 Android 工程的 lib (libs) 目录下。
- 在 Eclipse 右键工程 ->Properties->Java Build Path->Add JARs,导入您刚才复制的 jar 包。在 Android Studio 右键项目 ->Open Module Settings-> 选择项目模块 ->Dependencies->+,选择 File dependency,在 lib (libs) 目录下选择复制的 jar 包就可以完成导入。
配置权限
以下是日志服务 Android SDK 所需要的 Android 权限,请确保您的工程中 AndroidManifest.xml 文件中已经配置了如下权限,否则,SDK 将无法正常运行。
XML
1<uses-permission android:name="android.permission.INTERNET"/>
2<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
3<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
4<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
5<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
SDK 目录结构
Plain Text
1com.baidubce
2 ├── auth // BCE 签名相关类
3 ├── http // BCE 的 Http 通信相关类
4 ├── internal // SDK 内部类
5 ├── model // BCE 公用 model 类
6 ├── services
7 │ └── bls
8 │ ├── request // BLS 内部 model,如 Request 或 Response
9 │ ├── BlsClient.class // BLS 客户端入口类
10 │ └── BlsClientConfiguration.class // 针对 BLS 特有的 HttpClient 的配置
11 ├── util // BCE 公用工具类
12 ├── BceClientConfiguration.class // 对 BCE 的 HttpClient 的配置
13 ├── BceClientException.class // BCE 客户端的异常类
14 ├── BceServiceException.class // 与 BCE 服务端交互后的异常类
15 ├── ErrorCode.class // BCE 通用的错误码
16 └── Region.class // BCE 提供服务的区域
快速入门
以下演示了上传 log 的基本流程。
- 初始化 BlsClient,可查看 MainActivity 中 init () 方法。(可用的 Endpoint 可以在 API参考-服务域名查看。)
JAVA
1 // 所有的 API 通过 AK(Access Key ID)/SK(Secret Access Key)完成请求签名以通过服务端的鉴权和认证
2 String ak = "***";
3 String sk = "***";
4 // 设置鉴权
5 DefaultBceCredentials stsCredentials = new DefaultBceCredentials(ak, sk);
6 // 配置信息
7 LogClientConfiguration blsConfig = new LogClientConfiguration();
8 blsConfig.setCredentials(stsCredentials);
9 // 设置 endpoint
10 blsConfig.setEndpoint(BLS_ENDPOINT);
11 // 设置重试最大次数,每次重试的延迟时间
12 blsConfig.setRetryPolicy(new DefaultRetryPolicy(RETRY_MAX, RETRY_DELAY));
13 // 设置超时时长
14 blsConfig.withSocketTimeoutInMillis(DEFAULT_TIMEOUT_IN_MILLIS);
15 // 初始化 client
16 logClient = new BlsClient(blsConfig);
-
初始化日志,然后用 client 进行上传。日志记录的格式可以是 TEXT,也可以是 JSON 格式。如果是 TEXT,则不对日志进行解析;如果是 JSON 格式,可以自动发现 JSON 字段(仅支持首层字段发现,暂不支持嵌套类型字段的自动发现)。
- 上传 TEXT 类型日志
JAVA1 //logstore name,,用户自行设置 2 String logStoreName = createdLogStoreName; 3 4 //logstream name ,用户自行设置 5 String logStreamName = Settings.System.getString(MainActivity.this.getContentResolver(),Settings.System.ANDROID_ID); 6 // 设置日志结构 7 List<LogRecord> logRecordList = new ArrayList<LogRecord>(); 8 LogRecord record = new LogRecord(); 9 record.setMessage("this is log."); 10 record.setTimestamp(System.currentTimeMillis()); 11 logRecordList.add(record); 12 // 上传日志请求 13 PushLogRequest pushLogRequest = new PushLogRequest(logStoreName, logStreamName, logRecordList); 14 PushLogResponse response = logClient.pushLog(pushLogRequest); 15 boolean isSuccess = response.getHttpResponse().getStatusCode() == StatusCodes.HTTP_OK; 16 Log.e("main", "push log result: " + isSuccess);
- 上传 JSON 格式日志
JAVA1 //logstore name,,用户自行设置 2 String logStoreName = createdLogStoreName; 3 4 //logstream name ,用户自行设置 5 String logStreamName = Settings.System.getString(MainActivity.this.getContentResolver(),Settings.System.ANDROID_ID); 6 // 设置日志结构 7 List<LogRecord> logRecordList = new ArrayList<LogRecord>(); 8 LogRecord record = new LogRecord(); 9 record.setMessage("{\"level\":\"info\", \"status\": 200, \"cost\": 304.87}"); 10 record.setTimestamp(System.currentTimeMillis()); 11 logRecordList.add(record); 12 // 上传日志请求 13 PushLogRequest pushLogRequest = new PushLogRequest(logStoreName, logStreamName, "JSON", logRecordList); 14 PushLogResponse response = logClient.pushLog(pushLogRequest); 15 boolean isSuccess = response.getHttpResponse().getStatusCode() == StatusCodes.HTTP_OK; 16 Log.e("main", "push log result: " + isSuccess);
- 如果既想上传日志原文,又想上传解析出的具体字段,可以使用 JSON 格式进行上传,并在 JSON 中包含日志原文,使用 @raw 作为key,日志原文作为 value。 BLS 解析到 @raw 的时候,会将其内容作为日志原文处理。
JAVA1 //logstore name,,用户自行设置 2 String logStoreName = createdLogStoreName; 3 4 //logstream name ,用户自行设置 5 String logStreamName = Settings.System.getString(MainActivity.this.getContentResolver(),Settings.System.ANDROID_ID); 6 // 设置日志结构 7 List<LogRecord> logRecordList = new ArrayList<LogRecord>(); 8 LogRecord record = new LogRecord(); 9 record.setMessage("{\"@raw\":\"info 200 304.87ms this is log.\", \"level\":\"info\", \"status\": 200, \"cost\": 304.87}"); 10 record.setTimestamp(System.currentTimeMillis()); 11 logRecordList.add(record); 12 // 上传日志请求 13 PushLogRequest pushLogRequest = new PushLogRequest(logStoreName, logStreamName, "JSON", logRecordList); 14 PushLogResponse response = logClient.pushLog(pushLogRequest); 15 boolean isSuccess = response.getHttpResponse().getStatusCode() == StatusCodes.HTTP_OK; 16 Log.e("main", "push log result: " + isSuccess);
关于 SDK 使用到的 API 具体用法,可以参考:API参考-概览