

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

# 將自訂訊息寫入 CloudWatch Logs
<a name="cloudwatch-logs-writing"></a>

您可以將自訂訊息寫入 Managed Service for Apache Flink 應用程式的 CloudWatch 日誌。您可以使用 Apache [https://logging.apache.org/log4j/](https://logging.apache.org/log4j/) 程式庫或 [https://www.slf4j.org/](https://www.slf4j.org/) 程式庫來執行這項操作。

**Topics**
+ [使用 Log4J 寫入 CloudWatch 日誌](#cloudwatch-logs-writing-log4j)
+ [使用 SLF4J 寫入 CloudWatch 日誌](#cloudwatch-logs-writing-slf4j)

## 使用 Log4J 寫入 CloudWatch 日誌
<a name="cloudwatch-logs-writing-log4j"></a>

1. 將下列相依性新增至應用程式的 `pom.xml` 檔案：

   ```
   <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-api</artifactId>
       <version>2.6.1</version>
   </dependency>
   <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
       <version>2.6.1</version>
   </dependency>
   ```

1. 包括來自程式庫的物件：

   ```
   import org.apache.logging.log4j.Logger;
   ```

1. 具現化 `Logger` 物件，傳入你的應用程式類別：

   ```
   private static final Logger log = LogManager.getLogger.getLogger(YourApplicationClass.class);
   ```

1. 使用 `log.info` 寫入日誌。大量訊息會寫入應用程式日誌。若要讓您的自訂訊息更易於篩選，請使用 `INFO` 應用程式日誌層級。

   ```
   log.info("This message will be written to the application's CloudWatch log");
   ```

應用程式會將記錄寫入日誌，並顯示類似如下的訊息：

```
{
  "locationInformation": "com.amazonaws.services.managed-flink.StreamingJob.main(StreamingJob.java:95)", 
  "logger": "com.amazonaws.services.managed-flink.StreamingJob", 
  "message": "This message will be written to the application's CloudWatch log", 
  "threadName": "Flink-DispatcherRestEndpoint-thread-2", 
  "applicationARN": "arn:aws:kinesisanalyticsus-east-1:123456789012:application/test", 
  "applicationVersionId": "1", "messageSchemaVersion": "1", 
  "messageType": "INFO" 
}
```

## 使用 SLF4J 寫入 CloudWatch 日誌
<a name="cloudwatch-logs-writing-slf4j"></a>

1. 將下列相依性新增至應用程式的 `pom.xml` 檔案：

   ```
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
       <version>1.7.7</version>
       <scope>runtime</scope>
   </dependency>
   ```

1. 包括來自程式庫的物件：

   ```
   import org.slf4j.Logger;
   import org.slf4j.LoggerFactory;
   ```

1. 具現化 `Logger` 物件，傳入你的應用程式類別：

   ```
   private static final Logger log = LoggerFactory.getLogger(YourApplicationClass.class);
   ```

1. 使用 `log.info` 寫入日誌。大量訊息會寫入應用程式日誌。若要讓您的自訂訊息更易於篩選，請使用 `INFO` 應用程式日誌層級。

   ```
   log.info("This message will be written to the application's CloudWatch log");
   ```

應用程式會將記錄寫入日誌，並顯示類似如下的訊息：

```
{
  "locationInformation": "com.amazonaws.services.managed-flink.StreamingJob.main(StreamingJob.java:95)", 
  "logger": "com.amazonaws.services.managed-flink.StreamingJob", 
  "message": "This message will be written to the application's CloudWatch log", 
  "threadName": "Flink-DispatcherRestEndpoint-thread-2", 
  "applicationARN": "arn:aws:kinesisanalyticsus-east-1:123456789012:application/test", 
  "applicationVersionId": "1", "messageSchemaVersion": "1", 
  "messageType": "INFO" 
}
```