如何查看访问日志和WordPress错误日志?

如何查看访问日志和WordPress错误日志?

日志对于排除和调试 WordPress 网站上的问题非常有帮助。查看访问日志和 WordPress 错误日志非常简单。只需按照以下说明操作即可。

如何查看访问和 WordPress 错误日志

查看访问日志和 WordPress 错误日志有几种不同的方法,一种是通过服务器仪表板,另一种是直接下载原始日志文件。

  1. 选项 1 – 服务器控制面板
  2. 选项 2 – 通过 FTP 查看原始访问和 WordPress 错误日志
  3. 选项 3 – 在 wp-config.php 文件中启用错误日志
  4. 选项 4 – 通过 Kinsta API 查看日志

选项 1 – 服务器控制面板

以服务器提供商 Kinsta 为例,您可以在 MyKinsta 控制面板中访问日志。这是一种快速调试的方法,无需启动 FTP 客户端或命令行。

只需点击进入您的一个 WordPress 网站,然后在左侧菜单中点击 Logs。在下拉菜单中选择您的偏好,即可查看 error.log、kinsta-cache-perf.log 和 access.log 文件。

error.log 文件

在 MyKinsta 日志查看器中查看 error.log 文件

在 MyKinsta 日志查看器中查看 error.log 文件。

kinsta-cache-perf.log 文件

在 MyKinsta 日志查看器中查看 kinsta-cache-perf.log 文件

在 MyKinsta 日志查看器中查看 kinsta-cache-perf.log 文件。

access.log 文件

在 MyKinsta 日志查看器中查看 access.log 文件

在 MyKinsta 日志查看器中查看 access.log 文件。

选项 2 – 通过 FTP 查看原始访问和 WordPress 错误日志

查看日志的第二种方法是下载原始日志文件。首先,您需要通过 SFTP 连接到您的网站。然后在根目录下,你会看到一个名为 “logs” 的文件夹。

"logs" 文件夹

文件夹中包含访问日志、WordPress 错误日志和 Kinsta 缓存日志。

  • access.log
  • error.log
  • kinsta-cache-perf.log

访问日志、WordPress 错误日志和 Kinsta 缓存日志

对于较旧的日志存档,会自动创建 Gzip (.gz) 备份。有关 WordPress 的其他调试信息,请参阅代码集。

选项 3 – 在 wp-config.php 文件中启用错误日志

查看 WordPress 错误日志的最后一个方法是在 wp-config.php 文件中启用它们。首先,你需要通过 SFTP 连接到你的网站。然后下载你的 wp-config.php ,这样你就可以编辑它了。注意:一定要先备份该文件!

下载 wp-config.php 文件

下载 wp-config.php 文件

找到写着 /* That's all, stop editing! Happy blogging. */ ,并在其前添加以下内容(如下所示):

define( 'WP_DEBUG', true );

WP_DEBUG

WP_DEBUG

如果上述代码已存在于 wp-config.php 文件中,但设置为 “false”,只需将其更改为 “true” 即可。这将启用调试模式。注意:如果存在警告或错误,你也会在 WordPress 管理中看到它们。

然后,您可以在 WP_DEBUG 行后添加以下代码(如下所示),启用调试日志,将所有错误发送到一个文件:

define( 'WP_DEBUG_LOG', true );

WP_DEBUG_LOG

WP_DEBUG_LOG

保存更改并重新上传至服务器。错误信息将被记录到 /wp-content/ 文件夹中的 debug.log 文件中。如果由于某种原因看不到该文件,可以创建一个。

选项 4 – 使用 Kinsta API 查看日志

部分服务器还提供专门的API工具以实现服务器相关任务管理。比如 Kinsta API,就是一个功能强大的工具,可让您以编程方式与 Kinsta 服务(如托管 WordPress 网站)进行交互。API 还有一个端点,您可以用它来获取网站日志。

要使用 Kinsta 的 API,您必须在 MyKinsta 中至少拥有一个 WordPress 网站、应用程序或数据库账户。您还需要生成一个 API 密钥来验证和访问您的账户。

获得 API 密钥后,要使用 API 访问网站日志,您需要指定网站环境 ID。您可以通过 get site environment 端点以编程方式获取网站的环境 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 后,就可以发送 GET 请求到

https://api.kinsta.com/v2/sites/environments/{env_id}/logs?file_name=error&lines=100

该请求包括要获取的日志文件(accesserror, 或 kinsta-cache-perf)以及要获取的日志行数:

curl -i -X GET \
'https://api.kinsta.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 换行符分隔每一行。例如,您可以使用 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);

评论留言