moses / magento-log
Moses Magento Log
Requires
- magento/magento2-base: >=2.4.4
README
一个非常轻量级的日志模块,支持
- Rest Api 日志记录
- Elastic Search 日志记录
- GraphQl 日志记录
- RabbitMq 日志记录
- Varnish Cache Tag Bans 日志记录
没有覆盖或修改核心文件。这些日志是通过插件实现的。
请注意,此扩展仅用于调试目的,一旦启用,此扩展将根据您的配置将所有/部分请求和响应写入日志文件,因此请务必注意,长时间启用此扩展模式将耗尽您的磁盘空间。调试完成后,需要禁用此扩展
安装
对于 Magento 版本 >= 2.4.4
composer require moses/magento-log
php bin/magento module:enable Moses_Log
php bin/magento setup:upgrade
对于 Magento 版本 < 2.4.4
composer require moses/magento-log 1.1.0
php bin/magento module:enable Moses_Log
php bin/magento setup:upgrade
支持的日志记录
- Rest API 日志记录
- ElasticSearch 日志记录
对于小于 2.4.4 的 Magento 版本,如果您需要 GraphQl 日志记录支持,请尝试以下操作(注意:这未经过我的测试,您可以尝试一下)
- 将以下提交添加到您的代码库 https://github.com/magento/magento2/commit/50c88eb432b4a0880484a4db46165ad431d12a14
- 之后,直接从 git 下载 2.1.0 版本,并将其放在 app/code 下
警告:此软件包无法通过 Composer 1.x 安装,请确保您已升级到 Composer 2+。
或者您也可以从 github 下载 https://github.com/mosesdinakaran/magento-log.git
API 日志记录
提供记录所有/特定 API 调用的选项。
在我们的大多数环境中,我们使用不同的第三方服务,例如订单管理、产品管理、产品搜索、运输管理等。这些服务通过 Rest API 与 Magento 交互。
有时,如果我们遇到这些服务的任何问题,确定根本原因会非常困难。
此外,如果我们主要在无头环境中使用 Rest API,确定某些问题的根本原因将非常困难。
考虑以下场景:只有某个特定客户的“添加到购物车”功能不正常。
为了有效地调试此问题,我们需要该特定用户提交的请求数据、头信息等。
此扩展将帮助您在这种情况下。它具有可以记录特定用户发出的 API 请求的功能。
让我们看看此扩展的完整功能。
功能
通过管理员配置启用或禁用日志记录
能够使用正则表达式配置需要记录的 API URL,这将为开发者提供记录特定 URL 的无限机会
一些示例包括
- 能够记录所有 API 日志
- 能够记录登录用户的 API 调用
- 能够记录访客用户的 API 调用
- 能够记录特定的 API 调用,例如自定义 API、购物车、CMS、产品、订单等
- 能够记录特定用户的 API 调用。
- API 日志包含请求和响应
- 日志记录在单独的文件中
- 此扩展不会覆盖任何核心 API 类。
由于其非常轻量,因此可以安全地部署到生产环境中。
配置
店铺 -> 配置 -> Moses 扩展 -> API 日志
启用 API 日志:启用所有/选定的 API 调用
正则表达式模式:定义要记录选定 URL 的正则表达式模式,对于多个 URL 使用下一行。
例
V1/carts/9 : 匹配包含 V1/carts/9 的所有 quote ID 为 9 的 URL
V1/carts/(\d)* : 匹配所有 quote
V1/checkoutcomupapi/getTokenList : 匹配特定 URL
Elastic Search 日志记录
有时你可能需要找出确切推送至 Elasticsearch 的数据以及我们收到的响应。此扩展将帮助你做到这一点。它将记录 Magento 的所有 Elasticsearch 请求和响应。
配置
店铺 -> 配置 -> Moses 扩展 -> Elasticsearch 日志
工作原理
实现并不复杂,相当简单。
Magento 使用第三方 API 客户端 "elasticsearch/elasticsearch" 与 Elasticsearch 交互。默认情况下,此扩展具有记录请求和响应的功能。
\Elasticsearch\Connections\Connection::logRequestSuccess
但是在创建此 Elasticsearch 模型的实例时,由于 Magento 总是设置日志记录器为 NULL,因此请求从未被记录。此扩展通过插件将日志记录器设置为自定义日志记录器,因此请求和响应被记录。
GraphQl 日志记录
记录 GraphQL 请求和响应。
配置
店铺 -> 配置 -> Moses 扩展 -> Graphql 日志
功能
- 能够记录 GET/POST 请求或所有请求
- 能够根据 HTTP 标头值记录
- 能够根据查询类型记录
- product : 仅记录 product 查询类型
- product,categories : 记录 product 和 categories 查询类型
RabbitMq 日志记录
记录从 Magento 发送到 RabbitMq 服务器或由 Magento 从 RabbitMq 消费的消息。
配置
店铺 -> 配置 -> Moses 扩展 -> RabbitMq 日志
功能
- 能够记录外出消息(发布到 RabbitMq 服务器上的消息)
- 能够记录传入消息(从 RabbitMq 服务器消费的消息)
Varnish 缓存标签日志
记录 varnish 清除缓存标签,有关更多信息请参阅 此处
配置
店铺 -> 配置 -> Moses 扩展 -> 记录 Varnish 缓存清除标签
输出
一旦启用日志记录,日志数据将可在此处找到:MAGE_ROOT/var/log/moses-logging.log