yii2-airbrake
Airbrake integration for Yii2, which wraps around official
Airbrake PHP library (airbrake/phpbrake)., (*1)
Installation
composer require enscope/yii2-airbrake
Usage
While it is not explicitly required, it is recommended to configure the AirbrakeService
as a component in environment (or even common) configuration, so it is easily accessible
from the whole application (using i.e. Yii::$app->get('airbrakeService'))., (*2)
import enscope\Yii2\Ext\Airbrake\AirbrakeService;
import enscope\Yii2\Ext\Airbrake\AirbrakeFilterFactory;
return [
    // ...
    'components' => [
        // ...
        'airbrakeService' => [
            'class' => AirbrakeService::className(),
            'enabled' => true, // default TRUE
            'projectId' => [*your-project-id],
            'projectKey' => [*your-project-key],
            'environment' => YII_ENV, // default NULL
            'appVersion' => [your-app-version], // default NULL
            'rootDirectory' => [source-root-directory], // default NULL
            'host' => [api-endpoint-host], // default "api.airbrake.io"
            'httpClient' => [http-client-type], // default "default"
            'setGlobalInstance' => [boolean], // default TRUE
            'setErrorHandler' => [boolean], // default FALSE
            'filters' => [ // default NULL
                // 'PHPSESSID' and '_csrf' parameters should not be transferred to airbrake
                AirbrakeFilterFactory::createParamsFilter(['PHPSESSID', '_csrf']),
            ],
        ],
    ],
];
Configuration options marked with asterisk are required, all other options are optional., (*3)
- 
rootDirectory: should be set to your sources root to allow shortening of file paths 
- 
httpClient: specifies type of HTTP client to use and can be configured as:
AirbrakeService::CLIENT_DEFAULT 
AirbrakeService::CLIENT_GUZZLE 
AirbrakeService::CLIENT_CURL 
 
- 
setGlobalInstance: if set to true, current instance will be set as global instance 
- 
setErrorHandler: if set to true, current instance will be set as PHP run-time unhandled exception handler 
- 
filters: array of callables providing notice pre-processing 
For additional information about the API, please consult official Airbrake PHP library documentation., (*4)
AirbrakeFilterFactory
Factory class that can be used to create various filtering rules., (*5)
AirbrakeFilterFactory::createParamsFilter(array $params, $replacement = 'FILTERED')
Method will create filtering callable that filters parameters, specified by
$params and replaces it with specified $replacement. Example usage is
available above., (*6)
Console Support
Integration can be added to Yii console, where it currently provides a command
to track deployment (new feature in Airbrake API 4 that allows to mark error
timeline with deployments)., (*7)
Usage
To use ConsoleController, AirbrakeService should be configured as component., (*8)
import enscope\Yii2\Ext\Airbrake\ConsoleController;
return [
    // ...
    'controllerMap' => [
        // ...
        'airbrake' => [
            'class' => ConsoleController::className(),
            'airbrakeService' => [component-name], // default "airbrakeService"
        ],
    ],
];
While parameters can be hard-coded in configuration, console controller
supports inferParameters, username, revision and repository
parameters to be set by arguments on command line., (*9)
- 
airbrakeService: name of the component or initialized instance 
- 
inferParameters: if TRUE, repository and revision are discovered using exec() calls 
- 
revision: identifier of the revision, discovered by git rev-parse HEAD if infer allowed 
- 
repository: identifier of the repository, discovered by git remote get-url origin if infer allowed 
- 
username: name of the user tracking deploy (default "system") 
Logging Target
You can configure Yii2 logger to log errors automatically to Airbrake Service., (*10)
Usage
To use ConsoleController, AirbrakeService should be configured as component., (*11)
import enscope\Yii2\Ext\Airbrake\AirbrakeTarget;
return [
    // ...
    'components' => [
        // ...
        'log' => [
            // ...
            'targets' => [
                // ...
                [
                    'class' => AirbrakeTarget::className(),
                    'airbrakeService' => 'airbrakeService',
                    'levels' => ['error'],
                ],
            ],
        ],
    ],
];
The target currently does not expose any other configuration options
other then those exposed by yii\log\Target, except the service component:
* airbrakeService: name of the component or initialized instance, (*12)
License
Yii2 Airbrake integration is licensed under The MIT License (MIT)
as is the original PHP Airbrake library and follows the versioning of that library., (*13)