
# 云日志服务鸿蒙SDK
云日志服务鸿蒙SDK提供了ArkTS语言上报日志的一系列方法，方便用户直接使用编码方式上报日志到云日志服务后台。
![](https://support.huaweicloud.com/usermanual-lts/public_sys-resources/note_3.0-zh-cn.png)
当前仅支持华北-北京四、华东-上海一、华南-广州的白名单用户，如有需要请[提交工单](https://support.huaweicloud.com/usermanual-ticket/zh-cn_topic_0127038618.html)申请。
#### 传输协议
HTTPS
#### 使用前提
- 参考[注册华为账号并开通华为云](https://support.huaweicloud.com/usermanual-account/account_id_001.html)中操作，完成注册。

- 确认云日志服务的区域，请您根据所在区域，选择RegionName。
- 获取华为云账号的项目ID（project id），步骤请参见[API凭证](https://support.huaweicloud.com/usermanual-ca/ca_01_0002.html)。
- 获取需要上报到LTS的[日志组ID](https://support.huaweicloud.com/usermanual-lts/lts_07_0055.html#lts_07_0055__zh-cn_topic_0000001817927816_zh-cn_topic_0000001672281857_li16213910519)和[日志流ID](https://support.huaweicloud.com/usermanual-lts/lts_07_0055.html#lts_07_0055__zh-cn_topic_0000001817927816_zh-cn_topic_0000001672281857_li521209751)。
 
#### 版本更新说明
SDK如何处理个人信息请参考[华为云日志服务移动端日志采集SDK隐私声明](https://support.huaweicloud.com/productdesc-lts/lts-07152.html)。
您集成和使用的SDK时需要遵从个人信息保护基本要求，详情请参考[华为云日志服务移动端日志采集SDK开发者合规指南](https://support.huaweicloud.com/productdesc-lts/lts-07151.html)。
表1版本更新说明 
| 版本号   | 下载地址                                                                                 | 更新说明                               | 系统                 |
|:---|:---|:---|:---|
| 0.0.5 | 单击[下载](https://js-agent.obs.cn-north-4.myhuaweicloud.com/lts_harmony_sdk_0.0.5.har)  | 自定义User-Agent字段。                   | HarmonyOS NEXT及以上。 |
| 0.0.4 | 单击[下载](https://js-agent.obs.cn-north-4.myhuaweicloud.com/lts_harmony_sdk_0.0.4.har)  | 修复时间戳校验问题。                         | HarmonyOS NEXT及以上。 |
| 0.0.3 | 单击[下载](https://js-agent.obs.cn-north-4.myhuaweicloud.com/lts_harmony_sdk_1.0.14.har) | 将SDK写入和上报日志逻辑迁移到子线程，添加代码混淆与单元测试用例。 | HarmonyOS NEXT及以上。 |
| 0.0.2 | 单击[下载](https://js-agent.obs.cn-north-4.myhuaweicloud.com/lts_harmony_sdk_1.0.13.har) | 将日志状态存入数据库。                        | HarmonyOS NEXT及以上。 |
| 0.0.1 | 单击[下载](https://js-agent.obs.cn-north-4.myhuaweicloud.com/lts_harmony_sdk_1.0.11.har) | LTS鸿蒙SDK上线，支持缓存上报、立即上报等功能。         | HarmonyOS NEXT及以上。 |
   
#### 安装鸿蒙 SDK
1. **集成接入SDK。** SDK包使用语言为ArkTS，只能在ArkTS文件中引入。
   
   1. 鸿蒙仓库集成。
      - 在终端中运行安装命令。
        ```
        ohpm install lts_harmony_sdk
        ```
        
      
      - 在app/oh-package.json5中添加依赖。
        ```
        dependencies { 
             ... 
             "lts_harmony_sdk": "0.0.3"
             ... 
         }
        ```
        
      
      - 在终端中运行以下命令使能SDK。
        ```
        ohpm install
        ```
        
       
   
   2. 手动集成。
      - 下载日志SDK包。
      
      - 下载后解压到指定目录。注：直接解压即可，不需要额外操作。
      
      - 将解压后的har静态库文件添加到您的项目工程中。
      
      - 在app/oh-package.json5中添加依赖。
        ```
        dependencies { 
             ... 
             "lts_harmony_sdk": "file:../plugin/LTS_SDK/default/lts_harmony_sdk.har" // HAR包存放地址
             ... 
         }
        ```
        
      
      - 在终端中运行以下命令使能SDK。
        ```
        ohpm install
        ```
        
       
   
   
   
   
2. **初始化，详细参数请参考[表4]。**
   
   LTSSDK支持多实例日志上报机制，根据不同配置创建实例进行上报。
   - 添加依赖
     ```
     import { LTSSDK, ConfigParam } from 'lts_harmony_sdk';
     ```
     
   
   - ArkTS：初始化代码示例。
     ```
     // LTS参数配置
      const config:ConfigParam = { 
           // 必填参数
           region: string,  // 上报region 
           projectId: string,  // 华为云项目ID 
           groupId: string,  // LTS日志组ID 
           streamId: string,  // LTS日志流ID 
           accessKey: string, // 华为云访问密钥
           secretKey: string, // 华为云秘密访问密钥
           // 选填参数
           url: string,  // 上报地址
           cacheThreshold: number,  // 上报条数阈值
           timeInterval: number,  // 上报时间阈值
           isReportBackground: boolean // 是否开启后台上报
      }; 
      // 获取ApplicationContext 
      let applicationContext = this.context.getApplicationContext(); 
       // LTS初始化方法
      const ltssdk = new LTSSDK(applicationContext, config)
     ```
     
   
   
   
   
3. **上报日志，** LTS提供两种上报日志的方法。
   
   表2两种上报日志的方法 
   | Method                             | Description                   |
   |:---|:---|
   | report(content, labels)            | 上报日志：先存入本地数据库，根据配置中设定的策略实时上报。 |
   | reportImmediately(content, labels) | 立即上报日志。                       |
      
   表3Parameters参数 
   | Name    | Description                                                                                      |
   |:---|:---|
   | content | 日志内容，支持字典和字典数组；键值对最多300个；content转JSON字符串最大支持长度为30\*1024，超出部分被截断。                                 |
   | labels  | 日志标签。支持字典或空值；最外层键值对最多50个；最外层key最大长度为64，支持字母、数字和下划线组合，首字符须是字母；字典转JSON字符串最大支持长度为30720，超出则该条日志无法上报。 |
      
   ArkTS代码示例如下：
   ```
   const ltssdk = new LTSSDK(applicationContext, config) 
   let fruit = { 
       "fruit_1": "apple", 
       "fruit_2": "pear", 
       "fruit_3": "banana" 
   }; 
   let food = { "food_1": "rice" }; 
   let labels = { "date":"2023-10-01"}; 
   let contents = [food, fruit]; 
   ltssdk.report(food);  // 缓存上报单条 不带标签 
   ltssdk.report(food, labels);  // 缓存上报单条 带标签 
   ltssdk.reportImmediately(food);  // 立即上报单条 不带标签 
   ltssdk.reportImmediately(food, labels);  // 立即上报单条 带标签 
   ltssdk.report(contents); // 缓存上报多条 不带标签 
   ltssdk.report(contents, labels); // 缓存上报多条 带标签 
   ltssdk.reportImmediately(contents);  // 立即上报多条 不带标签 
   ltssdk.reportImmediately(contents, labels);  // 立即上报多条 带标签
   ```
   
   
 
#### 配置参数说明
 表4初始化参数说明 
| 参数名称               | 类型      | 是否必填 | 默认值  | 描述                                                                                  |
|:---|:---|:---|:---|:---|
| projectId          | string  | 必填   | -    | 华为云账号的项目ID。                                                                         |
| groupId            | string  | 必填   | -    | LTS的日志组ID。                                                                          |
| streamId           | string  | 必填   | -    | LTS的日志流ID。                                                                          |
| accessKey          | string  | 必填   | -    | 华为云账号的访问密钥，简称AK。注意：认证用的华为云账号AK、SK硬编码到代码中或者明文存储都有很大的安全风险，建议密文存放，使用时解密，确保安全。          |
| secretKey          | string  | 必填   | -    | 华为云账号的秘密访问密钥，简称SK。注意：认证用的华为云账号AK、SK硬编码到代码中或者明文存储都有很大的安全风险，建议密文存放，使用时解密，确保安全。        |
| region             | string  | 必填   | -    | LTS的服务区域。                                                                           |
| url                | string  | 选填   | null | 用于上报的公网地址域名，如未设置，将根据region自动生成链接，格式如下：https://lts-access.{region}.myhuaweicloud.com |
| cacheThreshold     | number  | 选填   | 200条 | 当本地数据库日志存储条数达到该值会触发上报，取值范围为30-1000条。                                                |
| timeInterval       | number  | 选填   | 3秒   | 定时器每隔该值会触发上报，取值范围为1-1800秒。                                                          |
| isReportBackground | boolean | 选填   | true | 是否开启APP切入后台时上报功能。                                                                   |
   
#### 上报日志策略说明
LTSSDK支持三种日志上报策略：阈值上报、定时上报、应用切后台时上报，根据场景选择合适的值配置cacheThreshold、timeInterval、isReportBackground等参数。
#### 权限配置
LTS-SDK需要鸿蒙的网络权限，如果没有配置，请将下面内容的写入APP的module.json5文件中：
```
{ 
  "module": { 
    ... 
    "requestPermissions":[ 
       ... 
      { 
        "name": "ohos.permission.INTERNET" 
      }, 
      { 
        "name": "ohos.permission.GET_NETWORK_INFO" 
      } 
    ], 
    ... 
 
}
```
#### 接入调试
在开发过程中可以启用调试模式，借助控制台日志实时查看上报日志的记录情况，观察具体结果并根据需要进行调整。
需要通过调用LTSSDK的静态方法来修改，SDK支持5个级别Debug、Info、Warning、Error和Off，默认值Off。5个级别分别对应的参数：LogLevel.DEBUG、LogLevel.INFO、LogLevel.WARNING、LogLevel.ERROR、LogLevel.OFF。代码示例如下：
```
ltssdk.setLogLevel(LogLevel.DEBUG)
```
#### 参数获取方式
- 区域表
  表5区域表 
  | 区域名称   | 区域         |
  |:---|:---|
  | 华北-北京四 | cn-north-4 |
  | 华东-上海一 | cn-east-3  |
  | 华南-广州  | cn-south-1 |
     
  
- 日志组ID：登录云日志服务页面，选择"日志管理"，鼠标悬浮在日志组名称上，可查看日志组名称和日志组ID。
- 日志流ID：单击"日志组名称"可查看日志流列表，鼠标悬浮在日志流名称上，可查看日志流名称和日志流ID。
 
