evolution7/bugsnag-bundle

Symfony2 的 Bugsnag 错误报告集成

2.0.1 2016-11-08 00:26 UTC

This package is not auto-updated.

Last update: 2024-09-14 14:29:44 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

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.phpweb/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/exceptionyour.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