GithubHelp home page GithubHelp logo

evolution7bugsnagbundle's Introduction

Latest Stable Version Total Downloads Latest Unstable Version License

Evolution7BugsnagBundle

Enables Bugsnag integration into your Symfony application, using the bugsnag-php 2.x library from Bugsnag.

Installation

The recommended way of installing this bundle is using Composer.

Add this repository to your composer information using the following command

composer require "evolution7/bugsnag-bundle:~2.0"

Add the bundle to your AppKernel.php:

$bundles = array(
    //Other Bundles
    new Evolution7\BugsnagBundle\BugsnagBundle(),

Define your Bugsnag API key in the config.yml

bugsnag:
    api_key: YOUR-API-KEY

Usage

After the installation the bundle works without any additional settings required, but you can tweak some settings.

Enabled Stages

You can set for which Symfony environments (kernel.environment) you want Bugsnag to be enabled. This is done through the enabled_stages setting:

bugsnag:
    enabled_stages: [dev, prod, staging]

These environments should match the environment as set in your application's web/app.php, web/app_dev.php and/or app/console. The default is to report bugs for the prod environment only.

Notify Stages

You can set for which environments you want Bugsnag to get error reports. This is done with the notify_stages setting:

bugsnag:
    notify_stages: [development, staging, production]

The default is to report bugs in staging and production environments.

Proxy

If your server requires you to access Bugsnag through a proxy, you can set this up easily as well. Just use the following example to configure the settings you need in your config.yml:

bugsnag:
    proxy:
        host: www.bugsnag.com
        port: 42
        user: username
        password: password

The only of these settings that is mandatory is the host, all others can be left out if they aren't required.

AppVersion

If you tag your app releases with version numbers, Bugsnag can display these on your dashboard if you set this:

bugsnag:
    app_version: v1.2.3

Testing

Included in the bundle is a controller that will allow you to test if your site is hooked up correctly. Just add the following to your routing.yml:

evolution7_bugsnag_bundle:
    resource: "@BugsnagBundle/Resources/config/routing.yml"
    prefix:   /bugsnagtest

And then afterwards you can access your.domain/bugsnagtest/exception and your.domain/bugsnagtest/error which should then send errors to your configured Bugsnag project.

Advanced Usage

Release Stage Class

Bugsnag allows you to determine which release stage you are currently in, the Evolution7BugsnagBundle uses a ReleaseStage class for this which determines this based on the path. Depending on your setup you might want to have a different way of determining this, in which case it is possible to override this by providing your own ReleaseStage class. You can implement a class that implements the Evolution7\BugsnagBundle\ReleaseStage\ReleaseStageInterface and provide its name as a parameter in your config.yml

bugsnag:
    release_stage:
        class: Your\Name\Space\ClassName

User Information

Bugsnag gives the possibility to give userdata as additional information to a request. If you give an id, name or email these fields will be searchable. Other fields are allowed but not searchable - they will only be displayed. The bundle allows to set a user to array converter as a service which will be used to send user data. The given service must be an instance of \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

Contributing

  • Fork it on Github
  • Commit and push until you are happy
  • Run the tests to make sure they all pass: composer install && ./vendor/bin/phpunit
  • Make a pull request
  • Thanks!

Acknowledgement

Parts of this code are based on the bugsnag-php-symfony Bundle

evolution7bugsnagbundle's People

Contributors

arjenschwarz avatar dbtlr avatar desmax avatar dzunke avatar iagomelanias avatar markseddon avatar my2ter avatar patromo avatar revoltek-daniel avatar thoaionline avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

evolution7bugsnagbundle's Issues

Rename "Symfony 2" to "Symfony"

Because this bundle should have support for Symfony 3 the current text "Symfony 2" should be renamed to "Symfony". This is best practice in the Symfony community if a bundle supports Symfony 2 and Symfony 3.

The repository description could only be fixed by the maintainer. There is no way to send a Pull Request for the repository description on GitHub.

Compatibility with Symfony 3

  [Symfony\Component\DependencyInjection\Exception\InvalidArgumentException]   
  The file "/home/archuser/k24/vendor/evolution7/bugsnag-bundle/Evolution7/Bu  
  gsnagBundle/DependencyInjection/../Resources/config/services.yml" does not   
  contain valid YAML.                                                          



  [Symfony\Component\Yaml\Exception\ParseException]                            
  The reserved indicator "@" cannot start a plain scalar; you need to quote t  
  he scalar at line 18 (near "arguments: [@bugsnag.client, @bugsnag.release_s  
  tage, @service_container]").   

git_hooks breaks rsync (symlink has no referent)

If I execute following rsync command:

rsync --recursive --cvs-exclude --verbose --copy-links --delete --delete-after --delete-excluded --links --times --exclude=/var/cache/* --exclude=/var/logs/* --exclude=/web/app_*.php --exclude=/web/config.php build/* [email protected]:/var/www/kewlapp

then I get following error:

building file list ... 
symlink has no referent: "/home/robert/workspace/swapp/build/vendor/evolution7/bugsnag-bundle/Evolution7/BugsnagBundle/git_hooks"
done
IO error encountered -- skipping file deletion

Support for Console Commands

Hi,

Firstly, Great work, makes the installation even simpler than usual for Bugsnag.

Would be great if it supported reporting of errors/exceptions within console commands.

Happy to work on it if that's something you are interested in adding?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.