webpractik / sentry
将日志发送到 Sentry 的模块
v2.1.4
2024-08-12 08:43 UTC
Requires
- php: >=7.2
- sentry/sdk: ^3.1
- vlucas/phpdotenv: ^2.1 || ^3.3 || ^4 || ^5
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 迁移
- 从文件
bitrix/.settings.php
中删除extension
和required_file
键 - 将
class_name
中的类更改为'\\Webpractik\\Sentry\\SentryException'
- 在管理面板中禁用并删除模块
- 在文件
composer.json
中将包版本webpractik/sentry
更改为 ^2.0 - 在控制台中执行
composer update webpractik/sentry
- 如果发生错误,请重置 composer 加载器缓存,使用
composer dump-autoload