justbetter/magento2-sentry

Magento 2 的 Sentry 日志器

安装数: 1,021,976

依赖关系: 5

建议者: 0

安全: 0

星标: 160

关注者: 11

分支: 71

开放问题: 16

类型:magento2-module

3.8.0 2024-08-09 09:13 UTC

README

此 Magento 2 模块将 Sentry SDK 集成到 Magento 2 中。根据在 Magento 2 后端配置的日志级别,通知和错误可以发送到 Sentry。

安装

  • composer require justbetter/magento2-sentry
  • bin/magento module:enable JustBetter_Sentry
  • bin/magento setup:upgrade
  • bin/magento setup:di:compile
  • bin/magento setup:static-content:deploy

配置

对于 Adobe Cloud 的配置,请参阅下面的配置

此模块使用 Magento 部署配置进行大部分配置。这意味着您需要将此数组添加到您的 app/etc/env.php

'sentry' => [
    'dsn' => 'example.com',
    'logrocket_key' => 'example/example',
    'environment' => null,
    'log_level' => \Monolog\Logger::WARNING,
    'errorexception_reporting' => E_ALL,
    'ignore_exceptions' => [],
    'mage_mode_development' => false,
    'js_sdk_version' => \JustBetter\Sentry\Block\SentryScript::CURRENT_VERSION,
    'tracing_enabled' => true,
    'tracing_sample_rate' => 0.5,
    'ignore_js_errors' => [],
    'disable_default_integrations' => [
        \Sentry\Integration\ModulesIntegration::class,
    ]
]

除了这些,您可以在 Stores > Configuration > JustBetter > Sentry 下找到一些配置选项。

配置值

  • dsn:请在此处输入您从 Sentry 获取的项目 DSN。您可以在“Client Key (DSN)”下的项目设置中找到 DSN。
  • environment:在此处,您可以指定部署版本正在运行的运行环境。常用环境包括生产、预发布和开发。使用此选项,您可以区分在预发布和例如在生产系统上发生的错误。
  • log_level:使用此配置,您可以指定从哪个日志级别开始 Sentry 应该获取消息。
  • errorexception_reporting:如果抛出的异常是 ErrorException 的实例,并且它符合错误报告,则将错误发送到 Sentry。此选项使用与 Error Reporting 相同的语法,例如 E_ERROR | E_WARNING 只记录错误和警告。
  • ignore_exceptions:如果抛出的类匹配此列表中的任何类,则不要将其发送到 Sentry,例如 [\Magento\Framework\Exception\NoSuchEntityException::class]
  • mage_mode_development:如果此选项设置为 true,则在您的 Magento 以开发模式运行时,您也将收到 Sentry 中的问题。
  • js_sdk_version:如果此选项设置为,它将加载 Sentry 的明确版本 JavaScript SDK。
  • tracing_enabled:如果此选项设置为 true,则启用跟踪(自动加载捆绑文件)。默认:false
  • tracing_sample_rate:如果启用跟踪,您还应设置样本率。默认:0.2
  • ignore_js_errors:JavaScript 错误消息数组,不应将其发送到 Sentry。(另请参阅 Sentry 文档 中的 ignoreErrors
  • disable_default_integrations:提供您不想使用的默认集成 FQCN 列表。默认集成列表。默认:[]

Adobe Cloud 的配置

由于 Adobe Cloud 不允许您手动添加内容到 env.php 文件,因此可以使用以下变量使用 Adobe Commerce 中的“变量”来完成配置

  • CONFIG__SENTRY__ENVIRONMENT__ENABLED:布尔值
  • CONFIG__SENTRY__ENVIRONMENT__DSN: 字符串
  • CONFIG__SENTRY__ENVIRONMENT__LOGROCKET_KEY: 字符串
  • CONFIG__SENTRY__ENVIRONMENT__ENVIRONMENT: 字符串
  • CONFIG__SENTRY__ENVIRONMENT__LOG_LEVEL: 整数
  • CONFIG__SENTRY__ENVIRONMENT__ERROREXCEPTION_REPORTING: 整数
  • CONFIG__SENTRY__ENVIRONMENT__IGNORE_EXCEPTIONS: 一个JSON编码的类数组
  • CONFIG__SENTRY__ENVIRONMENT__MAGE_MODE_DEVELOPMENT: 字符串
  • CONFIG__SENTRY__ENVIRONMENT__JS_SDK_VERSION: 字符串
  • CONFIG__SENTRY__ENVIRONMENT__TRACING_ENABLED: 布尔值
  • CONFIG__SENTRY__ENVIRONMENT__TRACING_SAMPLE_RATE: 浮点数
  • CONFIG__SENTRY__ENVIRONMENT__IGNORE_JS_ERRORS: 一个JSON编码的错误信息数组

以下配置设置可以在Magento管理员中进行覆盖。这是有限制的,以确保只能在对特定配置设置进行更改时在服务器级别进行,并且不会被管理员中的更改破坏。

可选的错误页面配置

  • 可选地,您可以在pub/errors中配置自定义错误页面。您可以使用Sentry反馈表单并将Sentry日志ID插入此处。Sentry日志ID在客户会话中捕获,可以在processor.php中检索。

在记录错误时将附加数据发送到Sentry

  • 在调用Psr\Log\LoggerInterface的任何函数时,您可以传递任何数据到参数$context,并且它将被发送到Sentry作为'自定义上下文'。

更改/过滤事件

此模块有一个名为sentry_before_send的事件,在设置配置before_send之前分发。这提供了编辑/过滤事件的方法。例如,您可以添加额外标准以确定异常是否应该捕获到Sentry。要防止异常被捕获,可以将事件设置为null或完全取消设置。

public function execute(\Magento\Framework\Event\Observer $observer)
{
    $observer->getEvent()->getSentryEvent()->unsEvent();
}

示例: https://github.com/justbetter/magento2-sentry-filter-events

兼容性

该模块在2.4.x版本的Magento和3.x版本的Sentry SDK上进行测试。我们不再支持2.1.x版本的Magento,请随意fork此项目或创建一个pull request。

想法、错误或建议?

请创建一个问题pull request

关于我们

我们是一家来自荷兰的创新开发机构,使用Laravel和Magento构建出色的网站、网店和Web应用程序。查看我们的网站justbetter.nl和我们的开源项目

许可证

MIT

JustBetter logo