graham-campbell/logviewer
A Laravel package that provides a browser-based log viewer for your application's log files, letting you browse, filter, and manage logs without opening a terminal. Simple to install and configure, it offers a quick way to inspect errors and debug issues in local or staging environments.
Architecture fit
LogViewer is a single-route admin module for Laravel 5: a service provider registering a route, controller, view, and config, reading files directly from storage/logs on local disk. That fits exactly one architecture — a single-instance, monolithic Laravel app on a persistent host using the default file log channel, where operators lack SSH and need read-only inspection. It does not fit containerized or autoscaled deployments (ephemeral disk), multi-node clusters (no aggregation; each request reads one pod), centralized logging stacks (ELK/Datadog/CloudWatch), or any environment where logs must not leave the host. As a TPM signal: this is an internal-tooling convenience, not an observability capability, and should be scoped and tracked as such.
Integration feasibility Mechanically trivial — one Composer require, provider registration, optional config publish, and a middleware binding. Estimate 2–4 engineer-hours for a working staging deployment, plus 1–2 days for the security review this package genuinely requires. The real constraint is compatibility, not effort: the package targets Laravel 5 and a PHP generation modern Laravel no longer supports, so feasibility is conditional on the host app already being legacy Laravel 5.
Technical risk High, concentrated in three areas:
storage/logs is a direct path to production secrets — stack traces, credentials in exception messages, PII in request payloads, tokens logged by SDKs. Protection depends entirely on our middleware configuration; there is no built-in RBAC, access audit, or redaction.The opportunity score reflects a real, recurring operator need — "let me see the log without SSH" — but that need is now met by maintained alternatives (Telescope, Pail, opcodesio/log-viewer), which caps the strategic value of adopting this specific package.
Key questions
Stack fit
Acceptable only for a legacy Laravel 5 monolith on a single persistent host. Table stakes: file log channel, non-ephemeral storage/logs, private-network or VPN-restricted access, and an existing auth middleware we can attach to the route. Anything else is a mis-scope.
Migration path Do not adopt as a long-term dependency. Frame it as one of two paths:
auth + role middleware + IP allowlist, restrict to non-production or break-glass production use, and log access.opcodesio/log-viewer for Laravel 8+ (same UX pattern, actively maintained), Telescope for richer diagnostics, php artisan pail for CLI-first teams. For anything multi-node, the real answer is shipping logs off-host and not having an in-app viewer at all.Compatibility
Verify against the actual constraint set before committing: PHP floor, Laravel 5.x minor range, and whether the provider uses APIs removed in later framework versions. Assume incompatibility with Laravel 9+ until proven otherwise; a five-minute composer require in a throwaway container settles this faster than documentation review.
Sequencing
Maintenance Ongoing cost is not upgrades — it is ownership. With no active maintainer, routine PHP/Laravel upgrades will break it and we will patch it ourselves. Budget a fork-and-patch reserve rather than an upgrade cadence, and record it in the dependency inventory as unmaintained so it does not silently drift.
Support Community-only, and effectively none given the dependents count. No vendor escalation path, no security advisories to subscribe to. Internal support means the adopting team becomes maintainer of record — the single largest hidden cost, and one that should be an explicit sign-off, not an implicit one.
Scaling Poor on every axis that matters. It reads local disk, so it does not aggregate across instances; horizontal scaling turns it into "which pod's logs do I happen to see?" Large files risk memory and response-time problems despite pagination and filtering. Treat it as a per-host debugging convenience, never an observability platform.
Failure modes
storage/logs → 500s from the admin panel itself.Ramp-up Near zero for engineers: install, register, browse. The meaningful ramp-up is operational — teaching the team which environments are permitted, what the middleware guarantees, and why the viewer must never be exposed on a public interface. That guidance needs to live in a runbook, because the package's zero-configuration default is not a safe default.
TPM recommendation: Use it as a requirements reference and build-vs-buy data point; do not adopt the package itself without a security review and a named maintenance owner. The capability is cheap to replicate in an admin panel, and the strategic value sits in the access-control and incident-response decisions it forces — not in the code.
How can I help you explore Laravel packages today?