laravel-enso/logs
Laravel Enso Logs adds a log viewer to the Enso admin panel, letting you browse, search, filter, download, and delete Laravel log files through a permissions-aware interface.
The package is an add-on to the Enso admin suite, not a standalone log viewer. Budget for laravel-enso/enso (or at minimum the core + UI packages) before you can make use of it.
composer require laravel-enso/logs
php artisan route:list doesn't show Enso routes, fix that first.logs.* permission entries appear in Roles > Permissions. Without this, the "Logs" sidebar entry stays hidden and you'll assume the package is broken.yarn install && yarn build (or npm run dev) after install so resources/js from the package is picked up.config/logs.php (if published) — filesystem disk and default log pathsrc/Http/Controllers/LogController.php — index/show/download/destroy endpointssrc/Services/LogService.php — the file listing, tailing, and pagination logicsrc/routes/api.php — the API surface mounted at /api/logslaravel.log, and tail recent entries in the browser. Hand the "Download" button to an admin and you've removed the most common reason to ask for SSH access.storage/logs. The service lists files on a Laravel filesystem disk and slices by line ranges. Point it at a dedicated disk in config/filesystems.php if your logs live off the default local disk, then reference that disk in the package config.config/logging.php channels as daily so Monolog rotates; the UI is for inspecting and clearing, not rotation. A workflow of "daily rotate + admin deletes stale files from the UI" is the intended shape.// AppServiceProvider::register()
$this->app->bind(LogService::class, App\Logs\MyLogService::class);
Keep the public method signatures (files(), show(), download(), destroy()) intact so the front-end and routes keep working.authorize/can:) so a hidden menu item isn't a free URL.laravel.log view for the exception class → download the file for the ticket, then delete it after rotation. No SSH round trip, no SCP.storage/logs/support.log via a custom channel, the file shows up automatically — no code change — as long as it lands in the configured path.composer require laravel-enso/logs into a plain Laravel app pulls in Enso dependencies and a Vue stack you weren't planning to run. If you only want a log viewer outside Enso, reach for rap2hpoutre/laravel-log-viewer or opcodesio/log-viewer instead.composer.json and check the Enso major version it expects — a mismatch surfaces as silently missing routes or Vue components that fail to register.www-data, etc.) must be able to read and delete files under storage/logs. Fresh deploys often leave storage/ owned by the deploy user; the Logs screen will list nothing or throw 500s. storage/logs should be 775 with a shared group.show() reads files before exposing it on a noisy production app. A 500 MB laravel.log read line-by-line for tailing can time out or exhaust memory. If it does, set memory_limit and max_execution_time on those routes, or cap file size in a custom LogService.logs.destroy permission to trusted roles and rely on daily rotation to bound exposure.download/show reject filenames containing .. or /. Confirm against the actual LogService — this is the one place a thin viewer package can grow a traversal bug.php artisan route:list | grep -i logs # routes registered?
ls -la storage/logs # files actually present?
php artisan db:seed --class=... # permissions seeded?
tail -f storage/logs/laravel.log # did the API call itself 500?
Nine times out of ten it's permissions not seeded or a stale front-end build, not the package code./api/logs prefix to avoid conflicting with a host-app route.How can I help you explore Laravel packages today?