evolution7 / bugsnag-bundle
Symfony2 的 Bugsnag 错误报告集成
Requires
- bugsnag/bugsnag: 2.*
- symfony/symfony: ~2.4|~3.0
Requires (Dev)
- evolution7/qa-tools: 1.*
README
Evolution7BugsnagBundle
该包允许使用 Bugsnag 的 bugsnag-php 2.x 库将 Bugsnag 集成到您的 Symfony 应用程序中。
安装
推荐使用 Composer 安装此包。
使用以下命令将此存储库添加到您的 composer 信息中
composer require "evolution7/bugsnag-bundle:~2.0"
将包添加到您的 AppKernel.php
$bundles = array( //Other Bundles new Evolution7\BugsnagBundle\BugsnagBundle(),
在 config.yml 中定义您的 Bugsnag API 密钥
bugsnag: api_key: YOUR-API-KEY
使用方法
安装后,该包无需任何额外设置即可正常工作,但您也可以调整一些设置。
启用阶段
您可以通过 enabled_stages 设置来设置您想要 Bugsnag 启用的 Symfony 环境类型 (kernel.environment
)。这是通过 enabled_stages 设置完成的
bugsnag: enabled_stages: [dev, prod, staging]
这些环境应与您的应用程序中的 web/app.php
、web/app_dev.php
和/或 app/console
中设置的环境相匹配。默认情况下,仅报告 prod
环境的错误。
通知阶段
您可以通过 notify_stages 设置来设置您想要 Bugsnag 收集错误报告的环境类型。这是通过 notify_stages 设置完成的
bugsnag: notify_stages: [development, staging, production]
默认情况下,将报告预发布和生产环境的错误。
代理
如果您的服务器要求您通过代理访问 Bugsnag,您也可以轻松设置。只需使用以下示例在 config.yml 中配置所需的设置即可
bugsnag: proxy: host: www.bugsnag.com port: 42 user: username password: password
以下设置中,只有主机是强制性的,其他设置如果没有要求可以省略。
应用程序版本
如果您为应用程序发布版本添加版本号,并且设置了此选项,Bugsnag 可以在仪表板上显示这些版本号
bugsnag: app_version: v1.2.3
测试
包中包含一个控制器,允许您测试您的站点是否正确连接。只需将以下内容添加到您的 routing.yml 中即可
evolution7_bugsnag_bundle: resource: "@BugsnagBundle/Resources/config/routing.yml" prefix: /bugsnagtest
然后您可以通过访问 your.domain/bugsnagtest/exception
和 your.domain/bugsnagtest/error
来访问,这将发送错误到您配置的 Bugsnag 项目。
高级使用
发布阶段类
Bugsnag 允许您确定当前处于哪个发布阶段,Evolution7BugsnagBundle 使用一个基于路径的 ReleaseStage 类来完成此操作。根据您的配置,您可能希望以不同的方式确定这一点,在这种情况下,您可以通过提供自己的 ReleaseStage 类来覆盖它。您可以实现一个实现 Evolution7\BugsnagBundle\ReleaseStage\ReleaseStageInterface
的类,并在 config.yml 中提供其名称作为参数
bugsnag: release_stage: class: Your\Name\Space\ClassName
用户信息
Bugsnag 允许您将用户数据作为附加信息提供给请求。如果您提供 id、name 或 email,则这些字段将是可搜索的。其他字段是允许的,但不可搜索 - 它们仅显示。该包允许设置一个将用户转换为数组的转换器作为服务,该服务将用于发送用户数据。提供的服务必须是 \Evolution7\BugsnagBundle\UserInterface 的实例
<?php # src/AppBundle/BugsnagUser.php namespace AppBundle; use Evolution7\BugsnagBundle\UserInterface as BugsnagUserInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\User\UserInterface as SymfonyUserInterface; class BugsnagUser implements BugsnagUserInterface { /** * @var TokenStorageInterface */ private $token; /** * @param TokenStorageInterface $token */ public function __construct(TokenStorageInterface $token) { $this->token = $token->getToken(); } /** * @inheritdoc */ public function getUserAsArray() { if ( is_null($this->token) || !$this->token->isAuthenticated() || !$this->token->getUser() instanceof SymfonyUserInterface ) { return []; } $user = $this->token->getUser(); return [ 'id' => $user->getId(), 'name' => $user->getUsername(), 'email' => $user->getEmail() ]; } }
# services.yml services: app.bugsnag_user: class: AppBundle\BugsnagUser arguments: [@security.token_storage]
# app/config/config.yml bugsnag: user: app.bugsnag_user
贡献
- 在 Github 上分叉它
- 提交并推送,直到您满意
- 运行测试以确保所有测试都通过:composer install && ./vendor/bin/phpunit
- 发起拉取请求
- 谢谢!
致谢
此代码的部分基于 bugsnag-php-symfony Bundle