webpractik/sentry

将日志发送到 Sentry 的模块

v2.1.4 2024-08-12 08:43 UTC

This package is auto-updated.

Last update: 2024-09-12 08:58:18 UTC


README

描述

用于将 Bitrix 的 PHP 错误发送到 Sentry 的模块
模块类继承自 Bitrix\Main\Diag\FileExceptionHandlerLog

要求

  • Composer
  • PHP 版本 >= 7.2

安装

安装包

composer require webpractik/sentry

配置

连接 composer 自动加载

在文件 init.php 中需要连接 composer 自动加载,如果尚未完成

require_once($_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php');

变量定义

为了安装环境和 Sentry 的 URL,需要在 .env 文件中定义两个变量

APP_ENV=production
SENTRY_DSN=https://<key>@sentry.io/<project>

为了在本地版本网站的开发过程中不将错误发送到 Sentry,需要将变量 APP_ENV 的值设置为 'local'。在生产服务器上应设置为 'production'

从 .env 文件中获取变量

与包依赖一起安装的库是 vlucas/phpdotenv,通过它可以获取 .env 文件(默认)中的变量

为此,需要在 init.php 中写入以下内容

if (class_exists('Dotenv\\Dotenv')) {
    $env = Dotenv\Dotenv::createImmutable($_SERVER['DOCUMENT_ROOT']);
    // Если на проекте используется другое имя файла, его можно задать вторым параметром
    // пример, $env = Dotenv\Dotenv::createImmutable($_SERVER['DOCUMENT_ROOT'], '.environment');
    try {
        $env->load();
    } catch (InvalidFileException | InvalidPathException $e) {
    }
}

createImmutable 方法中,需要指定 .env 文件(或 .environment)的路径

示例中显示了对 Dotenv 类存在的检查,以避免在生产服务器上首次部署时引发错误(在 composer install 完成之前)

如果您已经安装了 Laravel,则可能遇到版本包 vlucas/phpdotenv 的版本冲突错误,请检查是否安装了适当的版本。
旧版本 (^3.3) 包的连接方式也有所不同

if (class_exists('Dotenv\\Dotenv')) {
    $env = Dotenv\Dotenv::create($_SERVER['DOCUMENT_ROOT']); // изменение тут, в старой версии нет метода createImmutable
    // Если на проекте используется другое имя файла, его можно задать вторым параметром
    // пример, $env = Dotenv\Dotenv::create($_SERVER['DOCUMENT_ROOT'], '.environment');
    try {
        $env->load();
    } catch (InvalidFileException | InvalidPathException $e) {
    }
}

配置 Bitrix

为了使我们的错误处理器捕获错误,需要将其写入文件 bitrix/.settings.php 中的 [exception_handling][value][log] 部分
[exception_handling][value][log]

'class_name' => '\\Webpractik\\Sentry\\SentryException'

例如

'exception_handling' =>
    array (
        'value' =>
            array (
                'debug' => <bool>,
                'handled_errors_types' => <int>,
                'exception_errors_types' => <int>,
                'ignore_silence' => <bool>,
                'assertion_throws_exception' => <bool>,
                'assertion_error_type' => <int>,
                'log' =>
                    array (
                        'settings' =>
                            array (
                                'file' => '<path_to_error_log>/error.log',
                                'log_size' => <int>,
                            ),
                        'class_name' => '\\Webpractik\\Sentry\\SentryException',
                    ),
            ),
        'readonly' => <bool>,
    ),

从版本 1.0 迁移

  1. 从文件 bitrix/.settings.php 中删除 extensionrequired_file
  2. class_name 中的类更改为 '\\Webpractik\\Sentry\\SentryException'
  3. 在管理面板中禁用并删除模块
  4. 在文件 composer.json 中将包版本 webpractik/sentry 更改为 ^2.0
  5. 在控制台中执行 composer update webpractik/sentry
  6. 如果发生错误,请重置 composer 加载器缓存,使用 composer dump-autoload