WordPressサイトのトラブルシューティングやデバッグなどを行うときに、エラーについての記録が非常に重要な手がかりとなります。アクセスログやWordPressエラーログは、必要な時に簡単に確認できます。その方法を詳しくご紹介します。
アクセスログとWordPressエラーログを確認する方法
アクセスログとWordPressエラーログを確認する方法は複数あります。MyKinsta内で表示することも、生ログファイルをダウンロードすることもできます。
- 選択肢1. MyKinstaで表示する
- 選択肢2. WordPressの生ログを確認する
- 選択肢3. MyKinstaでデバッグモードを有効にする
- 選択肢4. wp-config.phpファイルのエラーログを有効にする
- 選択肢5. Kinsta APIでログを確認する
選択肢1. MyKinstaで表示する
MyKinstaでログを素早く確認することができます。これは、FTPクライアントやコマンドラインを使用することなく素早くデバッグしたい時に有用です。
対象のWordPressサイトをクリックして、左側のメニューから「ログ」をクリックします。ドロップダウンメニューから好みのファイルを選択してください。「error.log」「kinsta-cache-perf.log」「access.log」タブからそれぞれのファイルを見ることができます。
「error.log」ファイル

「kinsta-cache-perf.log」ファイル

「access.log」ファイル

選択肢2. FTPでWordPressの生ログを確認する
ログを表示する2つ目の方法は、生ログファイルのダウンロードです。最初のステップとして、SFTPを使用してWordPressサイトに接続します。ルートに「logs」というフォルダが確認できるはずです。

フォルダ内には、アクセスログ、WordPressエラーログ、そしてKinstaキャッシュのログがあります。
- access.log
- error.log
- kinsta-cache-perf.log

日付の古いログアーカイブを対象に、Gzip(.gz)バックアップが自動で作成されます。WordPressのデバッグについて詳しくはこちらをご参照ください。
選択肢3. MyKinstaでデバッグモードを有効にする
MyKinstaからWordPressデバッグモードを有効にすることができます。「サイト」>(サイト名)>「ツール」に移動し、「WordPressデバッグ」の「利用する」をクリックします。

選択肢4. wp-config.phpファイルのエラーログを有効にする
WordPressのエラーログを表示する最後の方法として、wp-config.phpファイルでログを有効にすることができます。まず、SFTPを使用してウェブサイトにアクセスします。次にwp-config.phpファイルを編集できるようにダウンロードします。注)必ず最初にこのファイルのバックアップを作成してください。

/* That's all, stop editing! Happy blogging. */を探し、その直前に次のコードを追加します。
define( 'WP_DEBUG', true );

wp-config.phpファイルに既に上記のコードが存在しており「false」に設定されている場合には、それを 「true」に変更するだけでOKです。これでデバッグモードが有効になります。注)存在する場合には、WordPress管理画面に警告またはエラーが表示されます。
次に、WP_DEBUGの直後に次のコードを追加することにより、すべてのエラーを特定のファイルに送信するように指定できます。
define( 'WP_DEBUG_LOG', true );

変更内容を保存し、ファイルをサーバーに再びアップロードします。するとエラーが/wp-content/フォルダ内のdebug.logファイルに記録されます。何らかの理由でこのファイルが確認できない場合には、自分で作成することもできます。
重要) Kinstaの環境でWP_DEBUGを有効にすると、すべてのエラーがdebug.logファイルにルーティングされ、MyKinstaのerror.logには何も記録されなくなります。
選択肢5. Kinsta APIでログを確認する
Kinsta APIを使うと、KinstaでホストしているWordPressサイトなどのサービスをAPI経由で操作できます。APIには、サイトのログを取得するためのエンドポイントも用意されています。
Kinsta APIを利用するには、MyKinstaに少なくとも1つのWordPressサイトがあるアカウントが必要です。また、認証してアカウントにアクセスするためのAPIキーを生成します。
APIキーを用意したら、API経由でサイトのログにアクセスするために、対象サイトの環境IDを指定します。環境IDは、サイト環境取得エンドポイントを使ってプログラムから取得できます。このエンドポイントでは、環境IDを含むサイト環境の詳細が返されます。
{
"site": {
"environments": [
{
"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"name": "first-site",
"display_name": "First site",
"is_blocked": false,
"id_edge_cache": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"cdn_cache_id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"is_premium": false,
"domains": [
{
"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"name": "example.com",
"type": "live"
}
],
"primaryDomain": {
"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"name": "example.com",
"type": "live"
},
"ssh_connection": {
"ssh_port": "808080",
"ssh_ip": {
"external_ip": "1xx.1xx.1xx.1xx"
}
},
"container_info": {
"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"php_engine_version": "php8.0"
}
}
]
}
}
サイトの環境IDを取得したら、次のURLにGETリクエストを送信します。
https://api.kimqsta.com/v2/sites/environments/{env_id}/logs?file_name=error&lines=100
このリクエストでは、取得したいログファイル(access、error、kinsta-cache-perf)と、取得するログの行数を指定します。
curl -i -X GET \
'https://api.kimqsta.com/v2/sites/environments/{env_id}/logs?file_name=access&lines=100' \
-H 'Authorization: Bearer '
レスポンスとして、指定した行数のログが文字列で返されます。
{
"environment": {
"container_info": {
"logs": "mysite.kinsta.cloud ::1 [07/Dec/2023:00:02:01 +0000] HEAD \"/wp-cron.php?server_triggered_cronjob\" HTTP/2.0 200 \"-\" \"curl/7.68.0\" - \"/wp-cron.php\" - - 230 0.017 0.018\nmysite.kinsta.cloud ::1 [07/Dec/2023:00:17:01 +0000] HEAD \"/wp-cron.php?server_triggered_cronjob\" HTTP/2.0 200 \"-\" \"curl/7.68.0\" - \"/wp-cron.php\" - - 230 0.139 0.139\nmysite.kinsta.cloud ::1 [07/Dec/2023:00:32:01 +0000] HEAD \"/wp-cron.php?server_triggered_cronjob\" HTTP/2.0 200 \"-\" \"curl/7.68.0\" - \"/wp-cron.php\" - - 230 0.016 0.016\nmysite.kinsta.cloud ::1 [07/Dec/2023:00:47:01 +0000] HEAD \"/wp-cron.php?server_triggered_cronjob\" HTTP/2.0 200 \"-\" \"curl/7.68.0\" - \"/wp-cron.php\" - - 230 0.015 0.015\n"
}
}
}
その後、\nによる改行ごとに文字列を分割して、ログを1行ずつ扱いやすい形式に整えることができます。たとえば、JavaScriptではsplit()メソッドを使用します。
const logsData = {
"environment": {
"container_info": {
"logs": "string"
}
}
};
const logsString = logsData.environment.container_info.logs;
// Splitting the logs string into an array of log entries based on the newline character '\n'
const logEntries = logsString.split('\n');
console.log(logEntries);