networkteam/sentry-client

TYPO3 的 Sentry 客户端。它将错误和异常转发到 Sentry - https://sentry.io/

安装次数: 581,306

依赖项: 1

建议者: 0

安全性: 0

星标: 33

关注者: 9

分支: 36

开放问题: 6

类型:typo3-cms-extension

5.2.0 2024-09-04 20:01 UTC

README

ci Latest release on GitHub Downloads per month

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