

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# サーバーメッセージのログ記録 (カスタムサーバー)
<a name="logging-server-messages-custom"></a>

Amazon GameLift Servers カスタムサーバーからのカスタムサーバーメッセージをログファイルにキャプチャできます。

**重要**  
ゲームセッションごとのログファイルのサイズには制限があります (「**AWS 全般のリファレンス」の「[Amazon GameLift Servers エンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/gamelift.html)」を参照)。ゲームセッションが終了すると、Amazon GameLift Servers はサーバーログを Amazon Simple Storage Service (Amazon S3) にアップロードします。Amazon GameLift Servers は制限を超えるログをアップロードしません。ログは急速に大きくなり、サイズ制限を超えることがあります。ログをモニタリングして、ログ出力を必要なメッセージのみに制限する必要があります。

## カスタムサーバーのログ記録設定
<a name="configuring-logging-for-custom-servers"></a>

Amazon GameLift Servers カスタムサーバーでは、ログ記録を実行する独自のコードを記述します。このコードをサーバープロセス設定の一部として設定します。Amazon GameLift Servers はログ記録設定を使用して、各ゲームセッションの終了時に S3 にアップロードする必要があるファイルを識別します。

以下の手順は、簡単なコード例を使用してログ記録を設定する方法を示しています。

------
#### [ C\+\+ ]

**ログ記録を設定するには (C\+\+)**

1. ゲームサーバーログファイルへのディレクトリパスである文字列のベクトルを作成します。

   ```
   std::string serverLog("serverOut.log");        // Example server log file
   std::vector<std::string> logPaths;
   logPaths.push_back(serverLog);
   ```

1. ベクトルを [ProcessParameters](integration-server-sdk-cpp-ref-datatypes.md#integration-server-sdk-cpp-ref-dataypes-process) オブジェクトの [LogParameters](integration-server-sdk-cpp-ref-datatypes.md#integration-server-sdk-cpp-ref-dataypes-log) として指定します。

   ```
   Aws::GameLift::Server::ProcessParameters processReadyParameter = Aws::GameLift::Server::ProcessParameters(
       std::bind(&Server::onStartGameSession, this, std::placeholders::_1),
       std::bind(&Server::onProcessTerminate, this),
       std::bind(&Server::OnHealthCheck, this),
       std::bind(&Server::OnUpdateGameSession, this),
       listenPort,
       Aws::GameLift::Server::LogParameters(logPaths));
   ```

1. [ProcessReady()](integration-server-sdk-cpp-ref-actions.md#integration-server-sdk-cpp-ref-processready) を呼び出すときに、[ProcessParameters](integration-server-sdk-cpp-ref-datatypes.md#integration-server-sdk-cpp-ref-dataypes-process) オブジェクトを指定します。

   ```
   Aws::GameLift::GenericOutcome outcome = 
      Aws::GameLift::Server::ProcessReady(processReadyParameter);
   ```

完全な例については、「[ProcessReady()](integration-server-sdk-cpp-ref-actions.md#integration-server-sdk-cpp-ref-processready)」を参照してください。

------
#### [ C\# ]

**ログ記録を設定するには (C\#)**

1. ゲームサーバーログファイルへのディレクトリパスである文字列のリストを作成します。

   ```
   List<string> logPaths = new List<string>();
   logPaths.Add("C:\\game\\serverOut.txt");     // Example of a log file that the game server writes
   ```

1. リストを [ProcessParameters](integration-server-sdk-csharp-ref-datatypes.md#integration-server-sdk-csharp-ref-dataypes-process) オブジェクトの [LogParameters](integration-server-sdk-csharp-ref-datatypes.md#integration-server-sdk-csharp-ref-dataypes-log) として指定します。

   ```
   var processReadyParameter = new ProcessParameters(
       this.OnGameSession,
       this.OnProcessTerminate,
       this.OnHealthCheck,
       this.OnGameSessionUpdate,
       port,
       new LogParameters(logPaths));
   ```

1. [ProcessReady()](integration-server-sdk-csharp-ref-actions.md#integration-server-sdk-csharp-ref-processready) を呼び出すときに、[ProcessParameters](integration-server-sdk-csharp-ref-datatypes.md#integration-server-sdk-csharp-ref-dataypes-process) オブジェクトを指定します。

   ```
   var processReadyOutcome =
      GameLiftServerAPI.ProcessReady(processReadyParameter);
   ```

完全な例については、「[ProcessReady()](integration-server-sdk-csharp-ref-actions.md#integration-server-sdk-csharp-ref-processready)」を参照してください。

------

## ログへの書き込み
<a name="writing-to-logs-for-custom-servers"></a>

ログファイルは、サーバープロセスが起動した後も存在します。ログには、ファイルに書き込む任意の方法で書き込むことができます。サーバーの標準出力とエラー出力をすべてキャプチャするには、次の例のように出力ストリームをログファイルに再マップします。

------
#### [ C\+\+ ]

```
std::freopen("serverOut.log", "w+", stdout);
std::freopen("serverErr.log", "w+", stderr);
```

------
#### [ C\# ]

```
Console.SetOut(new StreamWriter("serverOut.txt"));
Console.SetError(new StreamWriter("serverErr.txt"));
```

------

## サーバーログへのアクセス
<a name="accessing-logs-for-custom-servers"></a>

ログアクセスはフリートタイプによって異なります。

### マネージド EC2 フリート
<a name="accessing-logs-managed-ec2"></a>

ゲームセッションが終了すると、Amazon GameLift Servers は自動的に S3 バケットにログを保存し、14 日間保持します。ゲームセッションのログのロケーションを取得するには、[GetGameSessionLogUrl](https://docs.aws.amazon.com/gamelift/latest/apireference/API_GetGameSessionLogUrl.html) API オペレーションを使用できます。ログをダウンロードするには、オペレーションが返す URL を使用します。

または、任意のログ記録サービスまたはストレージロケーションにログを直接送信するようにゲームサーバーを設定することで、独自のログ記録ソリューションを設定できます。詳細については、「[Amazon GameLift Servers ホストされたゲームサーバーを他の AWS リソースに接続する](gamelift-sdk-server-resources.md)」を参照してください。

### コンテナフリート
<a name="accessing-logs-containers"></a>

コンテナフリートは、すべてのコンテナから標準出力とエラーストリームをキャプチャします。ログ記録は、次のいずれかのオプションを使用して設定できます。
+ コンテナ出力を CloudWatch ログストリームとして指定されたロググループに保存する
+ コンテナ出力を S3 ストレージバケットに保存
+ ログ記録をオフにする (コンテナ出力は保存されません)

コンテナフリートの作成時にログ記録オプションを設定する方法の詳細については、Amazon GameLift Servers API リファレンスの「[LogConfiguration](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_CreateContainerFleet.html#gameliftservers-CreateContainerFleet-request-LogConfiguration)」を参照してください。