

# 設定 AWS IoT Wireless 資源的記錄
<a name="configure-resource-logging"></a>

若要設定 AWS IoT Wireless 資源的記錄，您可以使用 API 或 CLI。當開始監控 AWS IoT Wireless 資源時，您可以使用預設組態。若要這樣做，您可以略過此主題，然後進入 [使用 CloudWatch Logs 監控 AWS IoT Wireless](cloud-watch-logs.md) 來監控您的記錄。

在開始監控記錄之後，您可以使用 CLI 將日誌層級變更為更詳細選項，例如提供 `INFO` 和 `ERROR` 資訊，並啟用更多資源的記錄。

## AWS IoT Wireless 資源和日誌層級
<a name="log-levels-resources"></a>

在使用 API 或 CLI 之前，請使用下表了解不同的日誌層級，以及您可以設定其記錄的資源。此表格會顯示您在監控資源時於 CloudWatch 記錄中看到的參數。設定資源記錄的方式將決定您在主控台中看到的記錄。

如需範例 CloudWatch 日誌外觀的相關資訊，以及如何使用這些參數來記錄 AWS IoT Wireless 資源的實用資訊，請參閱 [檢視 CloudWatch AWS IoT Wireless 日誌項目](cwl-format.md)。


**日誌層級和資源**  

| 名稱 | 可能的值 | 描述 | 
| --- | --- | --- | 
| logLevel |  `INFO`、`ERROR` 或 `DISABLED`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-wireless/latest/developerguide/configure-resource-logging.html)  | 
| resource |  `WirelessGateway` 或 `WirelessDevice`  |  資源的類型，可以是 `WirelessGateway` 或 `WirelessDevice`。  | 
| wirelessGatewayType | LoRaWAN | 無線閘道的類型，當 resource 為 WirelessGateway 時，一律為 LoRaWAN。 | 
| wirelessDeviceType | LoRaWAN 或 Sidewalk | 無線裝置的類型，當 resource 為 WirelessDevice 時，可以是 LoRaWAN 或 Sidewalk。 | 
| wirelessGatewayId | - | 無線閘道的識別符，當 resource 為 WirelessGateway 時。 | 
| wirelessDeviceId | - | 無線裝置的識別符，當 resource 為 WirelessDevice 時。 | 
| event | Join、Rejoin、Registration、Uplink\$1data、Downlink\$1data、CUPS\$1Request 和 Certificate | 記錄的事件類型，取決於您所記錄的資源是無線裝置還是無線閘道。如需詳細資訊，請參閱[檢視 CloudWatch AWS IoT Wireless 日誌項目](cwl-format.md)。 | 

## AWS IoT Wireless 記錄 API
<a name="logging-api-roles"></a>

您可以使用下列 API 動作來設定資源的記錄。此表格也會顯示您必須為了使用 API 動作而建立的範例 IAM 政策。下節描述如何使用 API 來設定資源的日誌層級。


**記錄 API 動作**  

| API 名稱 | 描述 | 範例 IAM 政策 | 
| --- | --- | --- | 
|  [GetLogLevelsByResourceTypes](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetLogLevelsByResourceTypes.html)  |  傳回目前的預設日誌層級，或依資源類型傳回日誌層級，其中可包含無線裝置或無線閘道的記錄選項。  | <pre>{    <br />    "Version": "2012-10-17",    <br />    "Statement": [        <br />        {            <br />            "Effect": "Allow",            <br />            "Action": [                <br />                 "iotwireless:GetLogLevelsByResourceTypes"            <br />            ],            <br />            "Resource": [                <br />                "*"            <br />            ]        <br />        }<br />    ]<br />}</pre>  | 
|  [GetResourceLogLevel](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetResourceLogLevel.html)  | 傳回特定資源識別符和資源類型的日誌層級覆寫。資源可以是無線裝置或無線閘道。  | <pre>{    <br />    "Version": "2012-10-17",    <br />    "Statement": [        <br />        {            <br />            "Effect": "Allow",            <br />            "Action": [                <br />                 "iotwireless:GetResourceLogLevel"            <br />            ],            <br />            "Resource": [                <br />                 "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/012bc537-ab12-cd3a-d00e-1f0e20c1204a",           <br />            ]        <br />        }<br />    ]<br />}</pre> | 
|  [PutResourceLogLevel](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_PutResourceLogLevel.html)  | 設定特定資源識別符和資源類型的日誌層級覆寫。資源可以是無線閘道或無線裝置。  此 API 每個帳戶的日誌層級覆寫限制為 200 個。   | <pre>{    <br />    "Version": "2012-10-17",    <br />    "Statement": [        <br />        {            <br />            "Effect": "Allow",            <br />            "Action": [                <br />                 "iotwireless:PutResourceLogLevel"            <br />            ],            <br />            "Resource": [                <br />                "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/012bc537-ab12-cd3a-d00e-1f0e20c1204a",            <br />            ]        <br />        }<br />    ]<br />}</pre> | 
|  [ResetAllResourceLogLevels](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ResetAllResourceLogLevels.html)  |  移除所有資源 (包括無線閘道和無線裝置) 的日誌層級覆寫。  此 API 不會影響使用 `UpdateLogLevelsByResourceTypes` API 所設定的日誌層級。   | <pre>{    <br />    "Version": "2012-10-17",    <br />    "Statement": [        <br />        {            <br />            "Effect": "Allow",            <br />            "Action": [                <br />                 "iotwireless:ResetAllResourceLogLevels"            <br />            ],            <br />            "Resource": [                <br />                "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/*", <br />                "arn:aws:iotwireless:us-east-1:123456789012:WirelessGateway/*<br />            ]        <br />        }<br />    ]<br />}</pre> | 
|  [ResetResourceLogLevel](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ResetResourceLogLevel.html)  |  移除特定資源識別符和資源類型的日誌層級覆寫。資源可以是無線閘道或無線裝置。  | <pre>{    <br />    "Version": "2012-10-17",    <br />    "Statement": [        <br />        {            <br />            "Effect": "Allow",            <br />            "Action": [                <br />                 "iotwireless:ResetResourceLogLevel"            <br />            ],            <br />            "Resource": [                <br />                "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/012bc537-ab12-cd3a-d00e-1f0e20c1204a",            <br />            ]        <br />        }<br />    ]<br />}</pre> | 
|  [UpdateLogLevelsByResourceTypes](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateLogLevelsByResourceTypes.html)  |  設定預設日誌層級或依資源類型設定日誌層級。您可以將此 API 用於無線裝置或無線閘道的記錄選項，並控制將在 CloudWatch 中顯示的記錄訊息。  事件是選用的，而且事件類型繫結至資源類型。如需詳細資訊，請參閱[事件和資源類型](cwl-format.md#cwl-format-events-resources)。   | <pre>{    <br />    "Version": "2012-10-17",    <br />    "Statement": [        <br />        {            <br />            "Effect": "Allow",            <br />            "Action": [                <br />                 "iotwireless:UpdateLogLevelsByResourceTypes"            <br />            ],            <br />            "Resource": [                <br />                "*"            <br />            ]        <br />        }<br />    ]<br />}</pre> | 

## 使用 CLI 設定資源的日誌層級
<a name="configure-logging-api"></a>

本節描述如何使用 API 或 AWS CLI 設定 AWS IoT Wireless 的日誌層級。

**在使用 CLI 之前：**
+ 確定您已針對要執行 CLI 命令的 API 建立 IAM 政策，如先前所述。
+ 您需要您想要使用的角色的 Amazon 資源名稱 (ARN)。如果您需要建立要用於記錄的角色，請參閱 [建立 AWS IoT Wireless 的記錄角色和政策](create-logging-role-policy.md)。

**為什麼要使用 AWS CLI**  
依預設，如果建立 IAM 角色 `IoTWirelessLogsRole` (如 [建立 AWS IoT Wireless 的記錄角色和政策](create-logging-role-policy.md) 所述)，您會在 AWS 管理主控台 中看到預設日誌層級為 `ERROR` 的 CloudWatch 記錄。若要變更所有資源或特定資源的預設日誌層級，請使用 AWS IoT Wireless 記錄 API 或 CLI。

**如何使用 AWS CLI**  
API 動作可以分類為下列類型，取決於您想要設定所有資源還是特定資源的日誌層級：
+ API 動作 `GetLogLevelsByResourceTypes` 和 `UpdateLogLevelsByResourceTypes` 可以擷取並更新您帳戶中屬於特定類型 (例如無線閘道或 LoRaWAN 或 Sidewalk 裝置) 之所有資源的日誌層級。
+ API 動作 `GetResourceLogLevel`、`PutResourceLogLevel` 和 `ResetResourceLogLevel` 可以擷取、更新和重設您使用資源識別符指定之個別資源的日誌層級。
+ 對於您已使用 `PutResourceLogLevel` API 為其指定日誌層級覆寫的所有資源，API 動作 `ResetAllResourceLogLevels` 可將其日誌層級覆寫重設為 `null`。

**使用 CLI 設定 AWS IoT 的資源特定記錄**
**注意**  
您也可以使用 API 中對應於此處顯示的 CLI 命令的方法，在 AWS API 中執行此程序。

1. 依預設，所有資源的日誌層級都設定為 `ERROR`。若要為您帳戶中的所有資源設定預設日誌層級，或依資源類型設定日誌層級，請使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/update-log-levels-by-resource-types.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/update-log-levels-by-resource-types.html) 命令。下列範例顯示如何建立 JSON 檔案 `Input.json`，並提供此檔案作為 CLI 命令的輸入。您可以使用此命令來選擇性地停用記錄，或覆寫特定類型的資源和事件的預設日誌層級。

   ```
   {
       "DefaultLogLevel": "INFO",
       "WirelessDeviceLogOptions": 
        [
           {
            "Type": "Sidewalk",
            "LogLevel": "INFO",
            "Events": 
             [
               {
                 "Event": "Registration",
                 "LogLevel": "DISABLED"
               }
             ]
           }, 
           {
            "Type": "LoRaWAN",
            "LogLevel": "INFO",
            "Events": 
             [
               {
                "Event": "Join",
                "LogLevel": "DISABLED"
               }, 
               {
                "Event": "Rejoin",
                "LogLevel": "ERROR"
               }
             ]
           }
         ]
        "WirelessGatewayLogOptions": 
         [
           {
            "Type": "LoRaWAN",
            "LogLevel": "INFO",
            "Events": 
             [
               {
                "Event": "CUPS_Request",
                "LogLevel": "DISABLED"
               }, 
               {
                 "Event": "Certificate",
                 "LogLevel": "ERROR"
               }
             ]
           }
         ]
   }
   ```

   其中：  
**WirelessDeviceLogOptions**  
無線裝置的記錄選項清單。每個記錄選項都包含無線裝置類型 (Sidewalk 或 LoRaWAN)，以及無線裝置事件記錄選項的清單。每個無線裝置事件記錄選項都可以選擇性地包含事件類型及其日誌層級。  
**WirelessGatewayLogOptions**  
無線閘道的記錄選項清單。每個記錄選項都包含無線閘道類型 (LoRaWAN)，以及無線閘道事件記錄選項的清單。每個無線閘道事件記錄選項都可以選擇性地包含事件類型及其日誌層級。  
**DefaultLogLevel**  
用於所有資源的日誌層級。有效值為：`ERROR`、`INFO` 和 `DISABLED`。預設值為 `INFO`。  
**LogLevel**  
您要用於個別資源類型和事件的日誌層級。這些日誌層級會覆寫預設日誌層級，例如 LoRaWAN 閘道的日誌層級 `INFO`，以及兩種事件類型的日誌層級 `DISABLED` 和 `ERROR`。

   請執行下列命令來提供 `Input.json` 檔案，作為命令的輸入。此命令不會產生任何輸出。

   ```
   aws iotwireless update-log-levels-by-resource-types \ 
       --cli-input-json Input.json
   ```

   如果您想要移除無線裝置和無線閘道的記錄選項，請執行下列命令。

   ```
   {
       "DefaultLogLevel":"DISABLED",
       "WirelessDeviceLogOptions": [],
       "WireslessGatewayLogOptions":[]
   }
   ```

1. **update-log-levels-by-resource-types** 命令不會傳回任何輸出。使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/get-log-levels-by-resource-types.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/get-log-levels-by-resource-types.html) 命令來擷取資源特定的記錄資訊。此命令會傳回預設日誌層級，以及無線裝置和無線閘道記錄選項。
**注意**  
**get-log-levels-by-resource-types** 命令無法直接擷取 CloudWatch 主控台中的日誌層級。您可以使用 **get-log-levels-by-resource-types** 命令，來取得您已使用 **update-log-levels-by-resource-types** 命令，為資源指定的最新日誌層級資訊。

   ```
   aws iotwireless get-log-levels-by-resource-types 
   ```

   當您執行下列命令時，它會傳回您已使用 **update-log-levels-by-resource-types** 指定的最新記錄資訊。例如，如果您移除無線裝置記錄選項，則執行 **get-log-levels-by-resource-types** 將傳回此值作為 `null`。

   ```
   {
       "DefaultLogLevel": "INFO",
       "WirelessDeviceLogOptions": null,
        "WirelessGatewayLogOptions": 
         [
           {
            "Type": "LoRaWAN",
            "LogLevel": "INFO",
            "Events": 
             [
               {
                "Event": "CUPS_Request",
                "LogLevel": "DISABLED"
               }, 
               {
                 "Event": "Certificate",
                 "LogLevel": "ERROR"
               }
             ]
           }
         ]
   }
   ```

1. 若要控制個別無線閘道或無線裝置資源的日誌層級，請使用下列 CLI 指令：
   + [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/put-resource-log-level.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/put-resource-log-level.html)
   + [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/get-resource-log-level.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/get-resource-log-level.html)
   + [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/reset-resource-log-level.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/reset-resource-log-level.html)

   舉例來說，使用這些 CLI 的時機，假設您的帳戶中有大量正在記錄的無線裝置或閘道。如果只想要針對某些無線裝置進行疑難排解，您可以將 `DefaultLogLevel` 設定為 `DISABLED` 來停用所有無線裝置的記錄，然後使用 **put-resource-log-level**，只針對您帳戶中的那些裝置將 `LogLevel` 設定為 `ERROR`。

   ```
   aws iotwireless put-resource-log-level \ 
       --resource-identifier 
       --resource-type WirelessDevice
       --log-level ERROR
   ```

   在此範例中，命令只會針對指定的無線裝置資源將日誌層級設定為 `ERROR`，而且所有其他資源的記錄都會停用。此命令不會產生任何輸出。若要擷取此資訊並驗證是否已設定日誌層級，請使用 **get-resource-log-level** 命令。

1. 在上一個步驟中，您已偵錯問題並解決了錯誤，因此您可以執行 **reset-resource-log-level** 命令，將該資源的日誌層級重設為 `null`。如果您已使用 `put-resource-log-level` 命令來設定多個無線裝置或閘道資源的日誌層級覆寫 (例如疑難排解多個裝置的錯誤)，則可以使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/reset-all-resource-log-levels.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/reset-all-resource-log-levels.html) 命令，將所有這些資源的日誌層級覆寫重設回 `null`。

   ```
   aws iotwireless reset-all-resource-log-levels
   ```

   此命令不會產生任何輸出。若要擷取資源的記錄資訊，請執行 **get-resource-log-level** 命令。

## 後續步驟
<a name="configure-logging-next-steps"></a>

您已了解如何建立記錄角色，以及使用 AWS IoT Wireless API 來設定 AWS IoT Core for LoRaWAN 資源的記錄。接下來，若要了解如何監控記錄項目，請移至 [使用 CloudWatch Logs 監控 AWS IoT Wireless](cloud-watch-logs.md)。