raneomik/watchdog-bundle
Raneomik Watchdog Bundle is a Symfony package that adds watchdog-style monitoring to PHP applications. It provides a lightweight way to track application health and runtime status, helping you detect problems early and keep services reliable with simple configuration.
raneomik/watchdog-bundle is a Symfony bundle, not a Laravel package. Its composer.json will have "type": "symfony-bundle" and require symfony/framework-bundle (or similar). There is no extra.laravel.providers, so Composer will not auto-register anything for Laravel.composer.json (type, require, version constraints) → README.md (what "watchdog" actually checks here) → src/*Bundle.php (the bundle class with getContainerExtension()) → DependencyInjection/*Extension.php → Resources/config/services.* → any tests. That tells you whether the useful logic is framework-agnostic or welded to Symfony's container.composer require raneomik/watchdog-bundle in a throwaway Laravel app to observe dependency resolution. If symfony/framework-bundle gets pulled in, stop — you don't want a second framework in a Laravel app.Schedule::call(...) and discard the bundle wiring.Raneomik\WatchdogBundle\WatchdogBundle in config/bundles.php, add config/packages/watchdog.yaml, and inject the bundle's services into controllers or console commands.WatchdogServiceProvider that binds the underlying check class as a singleton. Only do this if the class has no Symfony type-hints in its constructor.$schedule->call(fn () => app(Watchdog::class)->check())->everyMinute()->withoutOverlapping(); — the withoutOverlapping() guard matters for any heartbeat/monitor so a slow check doesn't stack.event() or Log::channel('watchdog')->error(...).Route::get('/health', ...) that calls the watchdog and returns JSON with a status code. Do not try to reuse the bundle's Symfony controller.config/watchdog.php and read it with config('watchdog.*') inside your wrapper. Keep the wrapper thin so swapping to a native solution later is a one-file change.spatie/laravel-health for health checks, Telescope or Sentry for error/uptime monitoring, and plain Cache::remember('heartbeat', ...) for a liveness probe. Writing 30 lines is cheaper than maintaining a bridge.bootstrap/providers.php. If you skip that, app(Watchdog::class) will throw a "target not instantiable" error.composer why-not raneomik/watchdog-bundle and composer show -t before installing. Laravel pins specific Symfony component versions; a bundle requiring symfony/framework-bundle will usually conflict or bloat vendor/.ContainerInterface, EventDispatcherInterface, ParameterBagInterface, or RequestStack. Any of those means the service won't resolve in Laravel's container without shims.Configuration-tree driven (YAML/XML); Laravel expects a plain PHP array. The translation is manual and easy to get subtly wrong — mirror the defaults explicitly.composer install -vvv, then php artisan about to confirm the provider loaded, then php artisan tinker and app(Watchdog::class) to see the actual resolution error. Wrap each check in Log::debug() so you can see how far it gets.How can I help you explore Laravel packages today?