PHPackages                             silverstripe/raygun - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Logging &amp; Monitoring](/categories/logging)
4. /
5. silverstripe/raygun

ActiveSilverstripe-vendormodule[Logging &amp; Monitoring](/categories/logging)

silverstripe/raygun
===================

Raygun integration for SilverStripe

5.0.0(11mo ago)6189.9k↓43.8%24[3 issues](https://github.com/silverstripe/silverstripe-raygun/issues)[1 PRs](https://github.com/silverstripe/silverstripe-raygun/pulls)2BSD-3-ClausePHPPHP ^8.3

Since Apr 3Pushed 11mo ago11 watchersCompare

[ Source](https://github.com/silverstripe/silverstripe-raygun)[ Packagist](https://packagist.org/packages/silverstripe/raygun)[ Docs](https://github.com/silverstripe/silverstripe-raygun)[ RSS](/packages/silverstripe-raygun/feed)WikiDiscussions master Synced 2d ago

READMEChangelog (10)Dependencies (2)Versions (35)Used By (2)

Raygun integration for Silverstripe
===================================

[](#raygun-integration-for-silverstripe)

This is a simple module that binds Raygun to the error &amp; exception handler of Silverstripe.

Requirements
------------

[](#requirements)

- PHP ^8.3
- Raygun4PHP ^2
- Silverstripe Framework ^6

Support for Silverstripe 3 can be found in version `^1`. Support for Silverstripe 4 can be found in versions `^2` and `^3`.

Installation
------------

[](#installation)

```
composer require silverstripe/raygun

```

Configuration
-------------

[](#configuration)

Add the following to your `.env` file:

```
SS_RAYGUN_APP_KEY="dwhouq3845y98uiof=="
```

If you want to track JavaScript errors in CMS, you can activate `LeftAndMainExtension` in your project YAML configs:

```
---
Name: raygunning-left-and-main
---
SilverStripe\Admin\LeftAndMain:
  extensions:
    - SilverStripe\Raygun\LeftAndMainExtension
```

#### Set Log Level

[](#set-log-level)

You can define the error reporting level in your YAML config:

```
SilverStripe\Core\Injector\Injector:
  SilverStripe\Raygun\RaygunHandler:
    constructor:
      client: '%$Raygun4php\RaygunClient'
      level: 'error'
```

#### User tracking

[](#user-tracking)

By default, no user data will be sent to Raygun at all. You can choose to track logged-in members by setting some yml configuration:

```
---
After: raygun
---
Raygun4php\RaygunClient:
  disable_user_tracking: false

SilverStripe\Raygun\RaygunHandler:
  user_main_id_field: 'ID' #default: 'Email'. This is the "Identifier" in the Raygun app.
  user_include_firstname: true #default: false
  user_include_fullname: true #default: false
  user_include_email: true #default: false
```

#### Multiple Raygun API Keys (app keys)

[](#multiple-raygun-api-keys-app-keys)

You may have more than one Raygun integration, each of which could use custom API keys, different from the default one (set by `SS_RAYGUN_APP_KEY`). To do so you'll need to configure each one of them separately. Here are some examples:

```
# Here's an example of the LeftAndMainExtension using a custom raygun
# API Key, set through a custom environment variable (SS_CUSTOM_RAYGUN_APP_KEY)

---
Name: custom-raygun-leftnmain-extension
---
SilverStripe\Core\Injector\Injector:
  SilverStripe\Raygun\LeftAndMainExtension.custom:
    class: SilverStripe\Raygun\LeftAndMainExtension
    properties:
      # You'll have to set the SS_CUSTOM_RAYGUN_APP_KEY environment var
      CustomRaygunAppKey: '`SS_CUSTOM_RAYGUN_APP_KEY`'

---
Name: raygunning-left-and-main
After: custom-raygun-leftnmain-extension
---
SilverStripe\Admin\LeftAndMain:
  extensions:
    - SilverStripe\Raygun\LeftAndMainExtension.custom
```

```
# Here's an example of a custom Raygun handler for Monolog
# which uses API Key provided by a custom RaygunClientFactory

---
Name: custom-monolog-raygun-handler
---
SilverStripe\Core\Injector\Injector:
  SilverStripe\Raygun\RaygunClientFactory.custom:
    class: SilverStripe\Raygun\RaygunClientFactory
    properties:
      # You'll have to set the SS_CUSTOM_RAYGUN_APP_KEY environment var
      CustomRaygunAppKey: '`SS_CUSTOM_RAYGUN_APP_KEY`'

  Raygun4php\RaygunClient.custom:
    factory: '%$SilverStripe\Raygun\RaygunClientFactory.custom'

  SilverStripe\Raygun\RaygunHandler.custom:
    class: SilverStripe\Raygun\RaygunHandler
    constructor:
      client: '%$Raygun4php\RaygunClient.custom'
      level: 'debug'

  Psr\Log\LoggerInterface:
    calls:
      - [ pushHandler, [ '%$SilverStripe\Raygun\RaygunHandler.custom'] ]
```

#### Disable handler

[](#disable-handler)

The RaygunHandler is enabled by default when the `SS_RAYGUN_APP_KEY` environment variable is set. There may be some situations where you need that variable to be set but you don't want the handler enabled by default (e.g. you may not want the handler enabled in dev or test environments except when triggering some test exception via a `BuildTask`).

```
---
Only:
  environment: 'dev'
---
SilverStripe\Raygun\RaygunHandler:
  enabled: false
```

Then in your `BuildTask` you can enable that handler as required.

```
use SilverStripe\Control\Director;
use SilverStripe\Control\HTTPRequest;
use SilverStripe\Core\Config\Config;
use SilverStripe\Dev\BuildTask;
use SilverStripe\Raygun\RaygunHandler;

class TriggerTestExtensionTask extends BuildTask
{
    protected $title = 'Trigger Test Exception';

    protected $description = 'Throws an exception. Useful for checking raygun integration is working as expected.';

    /**
     * Throw a test exception that is directed through raygun.
     *
     * @param HTTPRequest $request
     */
    public function run($request)
    {
        $env = Director::get_environment_type();
        Config::modify()->set(RaygunHandler::class, 'enabled', true);
        throw new \Exception("Test exception thrown from '$env' environment.");
    }
}
```

#### Proxy

[](#proxy)

If you need to forward outgoing requests through a proxy (such as for sites hosted in CWP), you can set the proxy host and optional port via yaml config:

```
SilverStripe\Core\Injector\Injector:
  Raygun4php\RaygunClient:
    constructor:
      proxyHost: '`SS_OUTBOUND_PROXY`'
      proxyPort: '`SS_OUTBOUND_PROXY_PORT`'
```

Filtering
---------

[](#filtering)

Raygun will send the following data:

- $\_POST
- $\_SERVER
- $\_GET (included in URL also)

By default we filter out some sensitive Silverstripe details which appear in the $\_SERVER variable. These include:

- SS\_DATABASE\_USERNAME
- SS\_DEFAULT\_ADMIN\_USERNAME
- SS\_RAYGUN\_APP\_KEY
- Cookie information (through `Cookie` and `HTTP_COOKIE`)
- Basic auth information (through `PHP_AUTH_PW`)
- HTTP authorisation information (through `Authorization` and `HTTP_AUTHORIZATION`)
- Anything containing `PASSWORD`, `KEY`, `SECRET` or `TOKEN` (case insensitive)

You will likely want to filter out other sensitive data such as credit cards, passwords etc. You can do this in your `mysite/_config.php` file. These rules are applied to $\_SERVER, $\_POST and $\_GET data. All key comparisons are case insensitive.

Example implementation in mysite/\_config.php:

```
