快速开始
更新时间:2024-09-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 将无法正常运行。
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
SDK 目录结构
com.baidubce
├── auth // BCE 签名相关类
├── http // BCE 的 Http 通信相关类
├── internal // SDK 内部类
├── model // BCE 公用 model 类
├── services
│ └── bls
│ ├── request // BLS 内部 model,如 Request 或 Response
│ ├── BlsClient.class // BLS 客户端入口类
│ └── BlsClientConfiguration.class // 针对 BLS 特有的 HttpClient 的配置
├── util // BCE 公用工具类
├── BceClientConfiguration.class // 对 BCE 的 HttpClient 的配置
├── BceClientException.class // BCE 客户端的异常类
├── BceServiceException.class // 与 BCE 服务端交互后的异常类
├── ErrorCode.class // BCE 通用的错误码
└── Region.class // BCE 提供服务的区域
快速入门
以下演示了上传 log 的基本流程。
- 初始化 BlsClient,可查看 MainActivity 中 init () 方法。(可用的 Endpoint 可以在 API参考-服务域名查看。)
// 所有的 API 通过 AK(Access Key ID)/SK(Secret Access Key)完成请求签名以通过服务端的鉴权和认证
String ak = "***";
String sk = "***";
// 设置鉴权
DefaultBceCredentials stsCredentials = new DefaultBceCredentials(ak, sk);
// 配置信息
LogClientConfiguration blsConfig = new LogClientConfiguration();
blsConfig.setCredentials(stsCredentials);
// 设置 endpoint
blsConfig.setEndpoint(BLS_ENDPOINT);
// 设置重试最大次数,每次重试的延迟时间
blsConfig.setRetryPolicy(new DefaultRetryPolicy(RETRY_MAX, RETRY_DELAY));
// 设置超时时长
blsConfig.withSocketTimeoutInMillis(DEFAULT_TIMEOUT_IN_MILLIS);
// 初始化 client
logClient = new BlsClient(blsConfig);
-
初始化日志,然后用 client 进行上传。日志记录的格式可以是 TEXT,也可以是 JSON 格式。如果是 TEXT,则不对日志进行解析;如果是 JSON 格式,可以自动发现 JSON 字段(仅支持首层字段发现,暂不支持嵌套类型字段的自动发现)。
- 上传 TEXT 类型日志
//logstore name,,用户自行设置 String logStoreName = createdLogStoreName; //logstream name ,用户自行设置 String logStreamName = Settings.System.getString(MainActivity.this.getContentResolver(),Settings.System.ANDROID_ID); // 设置日志结构 List<LogRecord> logRecordList = new ArrayList<LogRecord>(); LogRecord record = new LogRecord(); record.setMessage("this is log."); record.setTimestamp(System.currentTimeMillis()); logRecordList.add(record); // 上传日志请求 PushLogRequest pushLogRequest = new PushLogRequest(logStoreName, logStreamName, logRecordList); PushLogResponse response = logClient.pushLog(pushLogRequest); boolean isSuccess = response.getHttpResponse().getStatusCode() == StatusCodes.HTTP_OK; Log.e("main", "push log result: " + isSuccess);
- 上传 JSON 格式日志
//logstore name,,用户自行设置 String logStoreName = createdLogStoreName; //logstream name ,用户自行设置 String logStreamName = Settings.System.getString(MainActivity.this.getContentResolver(),Settings.System.ANDROID_ID); // 设置日志结构 List<LogRecord> logRecordList = new ArrayList<LogRecord>(); LogRecord record = new LogRecord(); record.setMessage("{\"level\":\"info\", \"status\": 200, \"cost\": 304.87}"); record.setTimestamp(System.currentTimeMillis()); logRecordList.add(record); // 上传日志请求 PushLogRequest pushLogRequest = new PushLogRequest(logStoreName, logStreamName, "JSON", logRecordList); PushLogResponse response = logClient.pushLog(pushLogRequest); boolean isSuccess = response.getHttpResponse().getStatusCode() == StatusCodes.HTTP_OK; Log.e("main", "push log result: " + isSuccess);
- 如果既想上传日志原文,又想上传解析出的具体字段,可以使用 JSON 格式进行上传,并在 JSON 中包含日志原文,使用 @raw 作为key,日志原文作为 value。 BLS 解析到 @raw 的时候,会将其内容作为日志原文处理。
//logstore name,,用户自行设置 String logStoreName = createdLogStoreName; //logstream name ,用户自行设置 String logStreamName = Settings.System.getString(MainActivity.this.getContentResolver(),Settings.System.ANDROID_ID); // 设置日志结构 List<LogRecord> logRecordList = new ArrayList<LogRecord>(); LogRecord record = new LogRecord(); record.setMessage("{\"@raw\":\"info 200 304.87ms this is log.\", \"level\":\"info\", \"status\": 200, \"cost\": 304.87}"); record.setTimestamp(System.currentTimeMillis()); logRecordList.add(record); // 上传日志请求 PushLogRequest pushLogRequest = new PushLogRequest(logStoreName, logStreamName, "JSON", logRecordList); PushLogResponse response = logClient.pushLog(pushLogRequest); boolean isSuccess = response.getHttpResponse().getStatusCode() == StatusCodes.HTTP_OK; Log.e("main", "push log result: " + isSuccess);
关于 SDK 使用到的 API 具体用法,可以参考:API参考-概览