Error Reporting with Rollbar and Craft CMS
Rollbar, a third-party service, provides an efficient way to log errors from Craft CMS without requiring a plugin. This streamlined approach can enhance the efficiency of your error-logging tasks.
What is Rollbar?
Rollbar is an error tracking and monitoring tool designed to help developers identify, track, and manage errors and exceptions in their applications. It provides real-time notifications and insights into issues, allowing development teams to quickly diagnose and fix problems.
Setting Up Rollbar
Rollbar offers a free plan to get set up. During the onboarding process, they will ask a few questions about your integrations. Choose the PHP SDK when asked in the project setup.
Once you get your Project Access Token, the post_server_item specifically, then add it to a new .env variable in your craft install called ROLLBAR_ACCESS_TOKEN_SERVER
ROLLBAR_ACCESS_TOKEN_SERVER=*************Add Rollbar to your composer.json
Next step is to add the Rollbar library to your project’s composer.json
ddev composer require rollbar/rollbarConfigure Craft CMS
Update the Craft CMS config/app.php file.
// php opening tag
use craft\helpers\App;
use Monolog\Logger;
use Monolog\Handler\RollbarHandler;
use Rollbar\Rollbar;
use samdark\log\PsrTarget;
// Rollbar Logging Setup
try {
initRollbarLogging();
} catch (Exception $e) {
}
return [
'id' => App::env('CRAFT_APP_ID') ?: 'CraftCMS',
'components' => [
'log' => [
'targets' => [
[
'class' => PsrTarget::class,
// Don't log any 404 errors
'except' => [
'yii\web\HttpException:40*',
],
'logger' => (
new Logger('web'))->pushHandler(
new RollbarHandler(Rollbar::logger()), Logger::DEBUG),
'addTimestampToContext' => true,
'logVars' => [],
]
]
],
],
];
function initRollbarLogging()
{
if (App::env("ROLLBAR_ACCESS_TOKEN_SERVER")) {
$rollbarConfig = [
"access_token" => App::env("ROLLBAR_ACCESS_TOKEN_SERVER"),
"environment" => App::env('CRAFT_ENVIRONMENT'),
// Optional for a Craft CMS site with users
"capture_email" => true,
"capture_username" => true,
"person_fn" => static function () {
if ($user = Craft::$app->getUser()->getIdentity()) {
return [
"id" => $user->id,
"username" => $user->email,
"email" => $user->email,
];
}
return null;
},
];
Rollbar::init($rollbarConfig);
}
}Resources
- https://docs.rollbar.com/docs/monolog#monolog-2x
- https://craftcms.com/docs/5.x/reference/config/app.html
- https://github.com/Seldaek/monolog/blob/main/src/Monolog/Handler/RollbarHandler.php
- https://docs.rollbar.com/docs/getting-started
- https://craftcms.com/docs/5.x/system/logging.html

