diginov / craft-sentry-logger
通过真正的 Yii 2 日志目标将 Craft CMS 日志推送到 Sentry
Requires
- craftcms/cms: ^5.0.0
- sentry/sentry: ^4.7.0
- dev-main
- 5.0.1
- 5.0.0
- 5.0.0-beta.1
- 4.1.6
- 4.1.5
- 4.1.4
- 4.1.3
- 4.1.2
- 4.1.1
- 4.1.0
- 4.0.1
- 4.0.0
- 4.0.0-beta.2
- 4.0.0-beta.1
- 1.3.6
- 1.3.5
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.8
- 1.1.7
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-craft-5
- dev-craft-4
- dev-craft-3
This package is auto-updated.
Last update: 2024-09-19 21:44:32 UTC
README
Craft CMS 的 Sentry 日志记录器
通过真正的 Yii 2 日志目标将 Craft CMS 日志推送到 Sentry。
功能
- 更新到最新和官方的 Sentry SDK
- 原生 Yii 2 日志目标,可完全自定义
- 发送每个请求的所有错误和警告
- 插件设置可以在 CP 或配置文件中定义
- 初始化 Sentry SDK 时传递的选项可以自定义
- 发送并分类
Craft::error()
和Craft::warning()
调用 - 匿名选项可防止敏感访客和用户数据被发送到 Sentry
推送到 Sentry 的其他数据
- 请求类型(Web、Ajax 或控制台)
- 请求方法、头和正文
- 请求路由包括查询字符串
- 执行的脚本包括参数(控制台请求)
- 用户 ID、电子邮件、用户名和组(敏感数据)
- 访客 IP 地址(敏感数据)
- 访客 Cookie(敏感数据)
- 数据库驱动程序类型和版本
- 图像驱动程序类型和版本
- Craft 版本、许可、架构和版本
- 从常规配置中获取 Craft
devMode
状态 - 从
CRAFT_ENVIRONMENT
获取 Craft 当前环境 - 编译模板中异常的 Twig 模板路径和行号
要求
此插件需要 PHP 8.2 或更高版本和 Craft CMS 5.0 或更高版本。
安装
要安装此插件,在 Craft 插件商店中搜索 Sentry Logger 并点击 安装,或在您的 Craft 项目文件夹中运行以下终端命令以使用 Composer 安装它:
composer require diginov/craft-sentry-logger php craft plugin/install sentry-logger
基本配置
您可以直接在 CP 中配置插件设置,或者您可以创建一个 config/sentry-logger.php
配置文件,内容如下。请确保根据正确的值更新您的 .env
环境文件。
<?php use craft\helpers\App; return [ '*' => [ 'enabled' => false, 'anonymous' => false, 'dsn' => App::env('SENTRY_DSN'), 'release' => App::env('SENTRY_RELEASE'), 'environment' => App::env('SENTRY_ENVIRONMENT'), 'levels' => ['error', 'warning'], 'exceptCodes' => [403, 404], 'exceptPatterns' => [], ], 'staging' => [ 'enabled' => true, ], 'production' => [ 'enabled' => true, ], ];
高级配置
这是一个更好的方法,因为它在加载任何 Craft 插件或模块之前将此 Sentry 日志目标添加到现有的日志组件中。这样您可以确保所有日志都发送到 Sentry。
请注意,此方法覆盖了基本配置方法。
要激活高级配置,扩展您现有的 config/app.php
配置文件中的 log
组件
<?php use craft\helpers\App; use diginov\sentrylogger\log\SentryTarget; return [ 'components' => [ 'log' => [ 'targets' => [ 'sentry' => function() { if (!class_exists(SentryTarget::class)) { return null; } return Craft::createObject([ 'class' => SentryTarget::class, 'enabled' => App::env('CRAFT_ENVIRONMENT') !== 'dev', 'anonymous' => false, 'dsn' => App::env('SENTRY_DSN'), 'release' => App::env('SENTRY_RELEASE'), 'environment' => App::env('SENTRY_ENVIRONMENT'), 'levels' => ['error', 'warning'], 'exceptCodes' => [403, 404], 'exceptPatterns' => [], ]); }, ], ], ], ];
配置参数
此插件添加了一个原生的 Yii 2 日志目标,它是 yii\log\Target 类的实例。有关所有可用属性的说明,请参阅 Yii 2 API 文档。
enabled
此必需参数是一个布尔值,表示是否启用此日志目标。
anonymous
此可选参数是一个布尔值,表示启用时,此日志目标将不会将敏感访客和用户数据发送到 Sentry。
userPrivacy
此可选参数是一个数组,包含当 anonymous
参数设置为 false
时将发送到 Sentry 的敏感用户数据。可用值包括 id
、email
、username
、ip_address
、cookies
和 permissions
。默认为所有敏感用户数据。
dsn
这个必需的参数是一个字符串,包含Sentry在您的项目设置中提供的客户端密钥(DSN)。
发布
这个可选参数是一个字符串,包含您部署到环境中的应用程序版本。有关Sentry文档中关于发布的更多信息。
环境
这个可选参数是一个字符串,包含指定您的应用程序部署位置的环境标签。默认为CRAFT_ENVIRONMENT
。在Sentry文档中了解更多关于环境的信息。
选项
这个可选参数是一个数组,包含在Sentry SDK初始化时传递给客户端的选项。在Sentry文档中查看有关可用选项的更多信息。
级别
这个必需的参数是一个数组,包含这个日志目标感兴趣的日志级别名称。默认为error
和warning
。我们故意禁用了向Sentry报告info
、profile
和debug
日志级别,因为Craft为这些日志级别生成了很多消息。
类别
这个可选参数是一个数组,包含这个日志目标感兴趣的日志消息类别。默认为空,表示所有类别。您可以在类别末尾使用星号,以便可以使用它来匹配具有相同常见前缀的类别。例如,yii\db*
将匹配以yii\db\
开头的类别,如yii\db\Connection
。
除外
这个可选参数是一个数组,包含这个日志目标不感兴趣的日志消息类别。默认为空,表示没有不感兴趣的类别。如果这个属性不为空,则列出的任何类别都将从categories
参数中排除。您可以在类别末尾使用星号,以便可以使用它来匹配具有相同常见前缀的类别。例如,yii\db*
将匹配以yii\db\
开头的类别,如yii\db\Connection
。
除外代码
这个可选参数是一个数组,包含这个日志目标不感兴趣的HTTP状态代码。这是except
参数的一个快捷方式,以便更容易使用。默认为403
和404
,这意味着yii\web\HttpException:403
和yii\web\HttpException:404
类别将从categories
参数中排除。
除外模式
这个可选参数是一个数组,包含这个日志目标不感兴趣的文本搜索模式。默认为空,表示没有不感兴趣的文本搜索模式。这些文本搜索模式将与异常消息、错误或警告的文本匹配。这对于过滤掉没有异常代码发送的文本消息非常有用,例如由Craft::error()
和Craft::warning()
方法发送的消息。
致谢
灵感来源于olegtsvetkov/yii2-sentry包,以及官方的sentry/sentry-symfony和sentry/sentry-laravel包。