

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 日誌
<a name="gg-cli-logs"></a>

使用 `logs`命令來分析核心裝置上的 Greengrass 日誌。

**子命令**
+ [get](#logs-get)
+ [list-keywords](#logs-list-keywords)
+ [list-log-files](#logs-list-log-files)

## get
<a name="logs-get"></a>

收集、篩選和視覺化 Greengrass 日誌檔案。此命令僅支援 JSON 格式的日誌檔案。您可以在 核組態中指定[記錄格式](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-logging-format)。

**概要**  

```
greengrass-cli logs get
    [--log-dir path/to/a/log/folder]
    [--log-file path/to/a/log/file]
    [--follow true | false ]
    [--filter <filter> ]
    [--time-window <start-time>,<end-time> ]
    [--verbose ]
    [--no-color ]
    [--before <value> ]
    [--after <value> ]
    [--syslog ]
    [--max-long-queue-size <value> ]
```

**Arguments (引數)**  
+ `--log-dir`、`-ld`。 要檢查日誌檔案的目錄路徑，例如 **`/greengrass/v2`/logs**。請勿與 搭配使用`--syslog`。為每個要指定的額外目錄使用單獨的引數。您必須使用 `--log-dir`或 中的至少一個`--log-file`。您也可以在單一命令中使用兩個引數。
+ `--log-file`、`-lf`。 您要使用的日誌目錄路徑。為每個要指定的額外目錄使用單獨的引數。您必須使用 `--log-dir`或 中的至少一個`--log-file`。您也可以在單一命令中使用兩個引數。
+ `--follow`、`-fol`。 在日誌更新發生時顯示日誌更新。Greengrass CLI 會繼續執行並從指定的日誌讀取。如果您指定時段，則 Greengrass CLI 會在所有時段結束後停止監控日誌。
+ `--filter`、`-f`。 要用作篩選條件的關鍵字、規則運算式或鍵值對。將此值提供為字串、規則表達式或索引鍵/值對。為每個要指定的額外篩選條件使用單獨的引數。

  評估時，單一引數中指定的多個篩選條件會由 OR 運算子分隔，而其他引數中指定的篩選條件則會與 AND 運算子合併。例如，如果您的命令包含 `--filter "installed" --filter "name=alpha,name=beta"`，則 Greengrass CLI 將篩選和顯示包含關鍵字`installed`和具有 `alpha`或 值的`name`金鑰的日誌訊息`beta`。
+ `--time-window`、`-t`。 要顯示日誌資訊的時間範圍。您可以同時使用確切的時間戳記和相對位移。您必須以 格式提供此資訊`<begin-time>,<end-time>`。如果您未指定開始時間或結束時間，則該選項的值會預設為目前的系統日期和時間。為每個要指定的額外時段使用單獨的引數。

  Greengrass CLI 支援下列時間戳記格式：
  + `yyyy-MM-DD`，例如 `2020-06-30`。當您使用此格式時，時間預設為 00：00：00。

    `yyyyMMDD`，例如 `20200630`。當您使用此格式時，時間預設為 00：00：00。

    `HH:mm:ss`，例如 `15:30:45`。當您使用此格式時，日期預設為目前的系統日期。

    `HH:mm:ssSSS`，例如 `15:30:45`。當您使用此格式時，日期預設為目前的系統日期。

    `YYYY-MM-DD'T'HH:mm:ss'Z'`，例如 `2020-06-30T15:30:45Z`。

    `YYYY-MM-DD'T'HH:mm:ss`，例如 `2020-06-30T15:30:45`。

    `yyyy-MM-dd'T'HH:mm:ss.SSS`，例如 `2020-06-30T15:30:45.250`。

  相對偏移會指定與目前系統時間的時段偏移。Greengrass CLI 支援下列格式的相對偏移：`+|-[<value>h|hr|hours][valuem|min|minutes][value]s|sec|seconds`。

  例如，下列引數指定目前時間 1 小時到 2 小時 15 分鐘之間的時間範圍`--time-window -2h15min,-1hr`。
+ `--verbose`。 顯示日誌訊息中的所有欄位。請勿與 搭配使用`--syslog`。
+ `--no-color`、`-nc`。 移除顏色編碼。日誌訊息的預設顏色編碼使用粗體紅色文字。僅支援類似 UNIX 的終端機，因為它使用 ANSI 逸出序列。
+ `--before`、`-b`。 在相符的日誌項目前面顯示的行數。預設值為 0。
+ `--after`、`-a`。 在相符的日誌項目之後顯示的行數。預設值為 0。
+ `--syslog`。 使用 RFC3164 定義的 syslog 通訊協定來處理所有日誌檔案。請勿搭配 `--log-dir`和 使用 `--verbose`。syslog 通訊協定使用以下格式：`"<$Priority>$Timestamp $Host $Logger ($Class): $Message"`。如果您未指定日誌檔案，則 Greengrass CLI 會從下列位置讀取日誌訊息：`/var/log/messages`、 `/var/log/syslog`或 `/var/log/system.log`。

  AWS IoT Greengrass 目前不支援 Windows 核心裝置上的此功能。
+ `--max-log-queue-size`、`-m`。 要配置到記憶體的日誌項目數目上限。使用此選項可最佳化記憶體用量。預設為 100。

**輸出**  
下列範例顯示執行此命令時產生的輸出。  

```
$ sudo greengrass-cli logs get --verbose \
    --log-file /greengrass/v2/logs/greengrass.log \
    --filter deployment,serviceName=DeploymentService \
    --filter level=INFO \
    --time-window 2020-12-08T01:11:17,2020-12-08T01:11:22

2020-12-08T01:11:17.615Z [INFO] (pool-2-thread-14) com.aws.greengrass.deployment.DeploymentService: Current deployment finished. {DeploymentId=44d89f46-1a29-4044-ad89-5151213dfcbc, serviceName=DeploymentService, currentState=RUNNING}
2020-12-08T01:11:17.675Z [INFO] (pool-2-thread-14) com.aws.greengrass.deployment.IotJobsHelper: Updating status of persisted deployment. {Status=SUCCEEDED, StatusDetails={detailed-deployment-status=SUCCESSFUL}, ThingName=MyThing, JobId=22d89f46-1a29-4044-ad89-5151213dfcbc
```

## list-keywords
<a name="logs-list-keywords"></a>

顯示建議的關鍵字，您可以用來篩選日誌檔案。

**概要**  

```
greengrass-cli logs list-keywords [arguments]
```

**Arguments (引數)**  
無

**輸出**  
下列範例顯示執行此命令時產生的輸出。  

```
$ sudo greengrass-cli logs list-keywords

Here is a list of suggested keywords for Greengrass log:
level=$str
thread=$str
loggerName=$str
eventType=$str
serviceName=$str
error=$str
```

```
$ sudo greengrass-cli logs list-keywords --syslog

Here is a list of suggested keywords for syslog:
priority=$int
host=$str
logger=$str
class=$str
```

## list-log-files
<a name="logs-list-log-files"></a>

顯示位於指定目錄中的日誌檔案。

**概要**  

```
greengrass-cli logs list-log-files [arguments]
```

**Arguments (引數)**  
`--log-dir`、`-ld`。 要檢查日誌檔案的目錄路徑。

**輸出**  
下列範例顯示執行此命令時產生的輸出。  

```
$ sudo greengrass-cli logs list-log-files -ld /greengrass/v2/logs/

/greengrass/v2/logs/aws.greengrass.Nucleus.log
/greengrass/v2/logs/main.log
/greengrass/v2/logs/greengrass.log
Total 3 files found.
```