Which hook is the first one that is fired?

Hi All,

I’m looking for a hook that preferably only gets fired once and as soon as possible on runtime. Any ideas?

Sam

For each event with a hook there is a before and an after hook. But what do you want to achieve?

May be; after loading Kirby and all the plugins the hook run: system.loadPlugins:after :thinking:

I want to register bugsnag for error monitoring. Obviously I can do this in the index.php (that’s what I do now) but I would like to make a plugin so I’m looking for a way to inject this as soon as possible via the plugin hooks or something. (so @ahmetbora loadPlugins:after is too late since you won’t get catch the plugin errors then)

Have you tried to install it via composer by making a new kirby plugin?

I’m not sure what you are getting at? Getting bugsnag in use and installed isn’t really the problem here. I just want to create a Kirby plugin that gets fired as soon as possible to register the bugsnag error handler thus I’m searching for the best and optimal way to do that :relaxed:

You are right that I do not fully understand :sweat_smile:

Hmm, I’m not sure with the plugin but I think you could do it with the fatal option. :thinking:

// /site/config/config.php
return [
  'debug' => true,
  'fatal' => function($kirby, $exception) { // $exception param is since 3.5.5
    $bugsnag = \Bugsnag\Client::make(); // need setup with api keys, endpoints, etc..
    $bugsnag->notifyException($exception);
    
    include $kirby->root('templates') . '/fatal.php';
  }
];

I hope this meets your needs.

You don’t even have to attach on fatal, You can register it to the errorHandler directly. The main part i’m in search for is what’s the best way to get this setup in a simple plugin with a hook on a smart place :wink:

ex. (this code already works if I, for example put it in the index.php above the render)

if($kirby->option('bugsnag.key') && $kirby->option('debug') === false)
{
    $bugsnag = Bugsnag\Client::make($kirby->option('bugsnag.key'));
    Bugsnag\Handler::register($bugsnag);
}

Pinging @lukasbestle to get find out any tricks about that.

If system.loadPlugins:after is too late, the only option is to register the handler directly from your plugin’s index.php. But accessing the $kirby object from there is not supported as it can cause issues in the loading order. So for best reliability you won’t be able to make your plugin registration depend on Kirby options.

I know this thread has been inactive for a while, but I’m curious, how you finally implemented your Bugsnag configuration in your Kirby app.
Did you do it over the fatal setting in the config oder did you attach it in the index.php?

Also, how did you get the Bugsnag\Handler::register($bugsnag); Handler to work? My Errors don’t seem to arrive, when I only attach the Handler…

Thanks!

I still basically have the same in my index.php. No problems with the handler, everything gets send to bugsnag as expected. (and except for these lines + installing it with composer I have done nothing special :thinking:)

if($kirby->option('bugsnag.key') && $kirby->option('debug') === false && file_exists("{$rootFolder}/vendor/bugsnag/bugsnag"))
{
   $bugsnag = \Bugsnag\Client::make($kirby->option('bugsnag.key'));
   \Bugsnag\Handler::register($bugsnag);
}