networkteam / sentry-client
TYPO3 的 Sentry 客户端。它将错误和异常转发到 Sentry - https://sentry.io/
Requires
- php: ^8.0
- sentry/sentry: ^4.6
- typo3/cms-backend: ^11.0 || ^12.0 || ^13.0
- typo3/cms-core: ^11.0 || ^12.0 || ^13.0
- typo3/cms-frontend: ^11.0 || ^12.0 || ^13.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-04 20:15:52 UTC
README
TYPO3 将错误消息和异常记录到日志文件和后端日志模块。本扩展将它们发送到 Sentry,这是一个 SaaS/自托管应用程序,它可以聚合它们并通过邮件通知您。在 Sentry 中,您可以看到带有附加信息(如堆栈跟踪、HTTP 头和提交的请求/表单数据)的错误消息。
技术决策
数据库故障(例如 mysql 服务器重启)引发的异常不应被报告,因此在此之前检查数据库连接。可以通过正则表达式根据其消息排除异常(如果无法修复此错误 => 排除它)。TYPO3 会抛出很多 PHP 注意信息,在生产环境中它们并不真正有趣,默认情况下会排除。
安装
$ composer require networkteam/sentry-client
不再为 TER 版本 提供更新。请随意给我们寄一箱啤酒,我们将发布新的 TER 版本。
配置
文件:system/settings.php 或 system/additional.php
注册异常处理器。
$GLOBALS['TYPO3_CONF_VARS']['SYS']['productionExceptionHandler'] = Networkteam\SentryClient\ProductionExceptionHandler::class; $GLOBALS['TYPO3_CONF_VARS']['SYS']['debugExceptionHandler'] = Networkteam\SentryClient\DebugExceptionHandler::class;
当 SYS/displayErrors
启用并且您的 IP 与 SYS/devIPmask
匹配时,DebugExceptionHandler 也会在生产环境中使用。
可选:将非异常错误转发到 Sentry,这些错误通常仅记录。考虑使用 LogLevel::WARN
$GLOBALS['TYPO3_CONF_VARS']['LOG']['writerConfiguration'] = [ \TYPO3\CMS\Core\Log\LogLevel::ERROR => [ \Networkteam\SentryClient\SentryLogWriter::class => [], ], ];
可选:设置 sentry/sentry 选项 (https://docs.sentry.io/platforms/php/configuration/options/)
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['sentry_client']['options']['server_name'] = 'web3';
环境变量
自从 Sentry SDK 2.x 以来,有一些 环境变量 可以使用,例如在 .htaccess 文件中
SetEnv SENTRY_DSN http://public_key@your-sentry-server.com/project-id
SetEnv SENTRY_RELEASE 1.0.7
SetEnv SENTRY_ENVIRONMENT Staging
功能开关
- 忽略数据库连接错误(它们最好由监控系统处理)
- 报告用户信息:选择
none
|userid
中的一个 - 忽略异常消息正则表达式
- 忽略 LogWriter 组件
如何测试扩展是否工作?
page = PAGE page.20 = USER page.20 { userFunc = Networkteam\SentryClient\Client->captureException }
这将触发一个将被报告的错误。
请求 ID
如果 Web 服务器已设置请求 ID 标头 X-Request-Id
,则将其作为标签传输以跟踪日志中的错误。
问题跟踪器
此扩展由 GitHub 管理。请随时在 https://github.com/networkteam/sentry_client 联系。
帮助
有一个 Slack 频道 #ext-sentry_client
更改日志
5.1.0
- 使用 sentry/sentry ^4.6
5.0.0
- 新选项 "disableDatabaseLogging":当启用时,异常不会写入数据库表 sys_log
- 引入 Sentry 集成
- 允许通过
EXTCONF
传递 sentry/sentry 选项 - 忽略在 TYPO3 核心中忽略的异常
- 使用
sentry/sentry
而不是sentry/sdk
(感谢 @derhansen) - !!! 选项 "logWriterLogLevel" 已删除。需要在
system/additional.php
中配置 LogWriter - !!! 选项 "messageBlacklistRegex" 重命名为 "ignoreMessageRegex"
- !!! 选项 "logWriterComponentBlacklist" 重命名为 "logWriterComponentIgnorelist"
- !!! 旧选项名称仍然有效
- !!! 停止支持 TYPO3 v10
- !!! 停止支持非 composer 使用
4.2.0
- 添加日志消息插值(感谢 @sascha-egerer)
- 将指纹添加到日志消息中
- 已弃用:DebugExceptionHandler 的使用
4.1.0
- 客户端 IP 通过
IpAnonymizationUtility::anonymizeIp()
匿名化。感谢 @extcode - 添加
X-Request-Id
作为标签。感谢 @bergo - 小的代码优化。感谢 @tlueder 和 @LeoniePhiline
4.0.0
- 将堆栈跟踪添加到 LogWriter 消息中,以便在 Sentry 中进行消息分组
- 添加 LogWriter 组件忽略列表
- 添加对 v11.5 的支持
- 停止对 v9.5 的支持
3.0..3.1
- 添加实验性 LogWriter
- 移除设置 activatePageNotFoundHandling
- 默认忽略 PageNotFoundException
- 支持 TYPO3 代理设置
- 使用 sentry/sdk:3.1
2.0..3.0
- 使用 sentry/sdk:2.0
- 移除设置 productionOnly
- 移除设置 reportWithDevIP
- 将设置 activatePageNotFoundHandlingActive 重命名为 activatePageNotFoundHandling
- 报告 E_ALL ^ E_NOTICE
- 移除项目根目录
- 在 FE 中显示事件 ID