Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Filament Logs Explorer Laravel Package

laboiteacode/filament-logs-explorer

Read Laravel log files inside your Filament panel, grouped by channel with a slide-over viewer, in-file search, match navigation, keyboard shortcuts, large-file truncation, and file deletion behind authorization.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • Pure presentation-layer plugin for Filament panels. No migrations, no models, no queue workers, no external services — it resolves log paths from config/logging.php and renders file contents in a slide-over on an existing Filament page.
  • Architectural coupling is to three things: the Filament panel contract (plugin registration + page/navigation/cluster placement), the Filament component cache (filament:optimize), and the Monolog file-handler convention (single, daily, monolog stream handlers, file-based members of a stack).
  • v1.0.2 confirms the plugin resolves panel context at registration time — earlier than the point where Filament can look the plugin up on its panel. That is an inherent ordering constraint of the Filament plugin API, not a package defect, but it means placement-related configuration is evaluated early and any change to it requires invalidating the component cache. Worth knowing before you scope a "just move the nav item" ticket.
  • Read-only by design, which is the right posture. The only write-adjacent action is "download raw file," which is effectively a read plus a response stream.
  • Fit is binary: if the admin surface is Filament, this drops in; if it is Nova, Backpack, or a custom Blade admin, it is unusable and not worth adapting.

Integration feasibility

  • Trivial to install: composer require, register the plugin in the panel provider, optionally set navigation group/sort/cluster and an authorization gate. A Filament-fluent developer is done in under an hour.
  • One added step versus v1.0.1: if the target environment caches Filament components, php artisan filament:optimize must be re-run after install and after every upgrade. The cache holds the old, unclustered registration, so a deploy that skips this silently produces a page in the wrong place. Add it to the deploy checklist rather than trusting reviewers to notice.
  • The hard part is still not installation, it is the security review and the "does it survive our log volume" question — both cheap to test in a staging spike. The cluster fix does not change either.
  • A time-boxed two-day spike (install, point at a realistic staging log corpus, verify cluster/navigation placement across panels, review file resolution and authorization) is sufficient to reach a go/no-go.

Technical risk

  • Supply chain / bus factor remains the dominant risk, but the v1.0.1 → v1.0.2 turnaround is a mildly positive signal: issues are being closed and releases cut. 6 stars and 0 dependents still mean no third party has battle-tested the edge cases for you. Treat it as a small utility you may end up owning rather than a dependency you can lean on.
  • File-read blast radius. Log files routinely contain credentials, tokens, PII, and full stack traces. Surfacing them in a web UI converts a filesystem-only exposure into an authenticated-web exposure. Authorization must be explicit, not inherited from "has panel access."
  • Path resolution is config-driven, not user-driven — a good sign — but a misconfigured or environment-specific stream handler can point at any readable path. Validate that only storage/logs-rooted paths are reachable, and confirm symlink handling. Unchanged by this release.
  • Panel-scoped config resolution is not fully proven. The v1.0.2 bug description states that in multi-panel installs the page "could also pick up the cluster configured on another panel." The fix addresses the cluster key specifically; whether other placement options (navigationGroup, navigationSort, slug) are similarly resolved globally is unverified. In a single-panel admin this is a non-issue. In a multi-panel install (e.g. admin + partner portal + vendor panel), it is a concrete thing to check during the spike.
  • Large-file behavior is still unspecified in the README. Whether it streams/tails or reads the whole file into memory determines whether this is a convenience or a 500-error generator on a 2 GB daily file.
  • Rotation semantics are unclear. For daily, does it enumerate rotated siblings, and does it handle .gz archives or render them as binary garbage?
  • Registration is cache-sensitive. Because Filament caches plugin registration, the failure mode of a skipped filament:optimize is not an exception but a silently mis-placed page. Low severity, high annoyance, and it will be attributed to the package rather than the deploy.

Key questions

  1. Confirm v1.0.2 is the intended minimum version if you use clusters, and confirm the exact Filament major/minor support matrix and PHP version bounds — is there a v4-compatible release, and is the branch maintained?
  2. Do navigationGroup / navigationSort / slug resolve per-panel correctly, or do they share the same registration-time resolution problem the cluster key had in multi-panel installs?
  3. Is there a documented authorization hook (Gate/Policy) and does the navigation item hide for unauthorized users, or is it a manual canAccess override?
  4. Does the viewer read the whole file, paginate, or tail? Is there a size cap or a truncation warning?
  5. Which handlers are actually supported in practice — does daily enumerate rotated files, does stack include all file members, are non-file handlers (stderr, syslog, papertrail) cleanly ignored rather than erroring?
  6. Are there tests covering path traversal, unreadable files, missing channels, and cluster placement, and what does the CI badge actually run?
  7. Can the page be disabled per-environment (e.g. local/staging only) with a config flag?

Integration Approach

Stack fit

  • Laravel 10/11/12 + Filament 3/4, logs written to local disk via single/daily/file-based stack channels: ideal fit. Cluster support now works, so it also fits admin surfaces organized into clusters — a real gap closed for teams that lean on Filament's cluster navigation.
  • Poor fit if logs go to stderr/stdout (container-native, twelve-factor), to a PaaS with ephemeral filesystem, or to an aggregator (Datadog, Sentry, Papertrail, CloudWatch). In those cases there is nothing on disk to read on the node serving the request.
  • Multi-node deployments: this reads node-local files, so behind a load balancer two admins can see different logs for the same incident. Either accept that (pin the panel to a single node / use session affinity) or require shared storage.

Migration path

  • Purely additive. No schema changes, no data backfill, no changes to logging configuration. Rollback is composer remove plus removing one line from the panel provider.
  • From v1.0.1 to v1.0.2: version bump, composer update, then re-run php artisan filament:optimize wherever components are cached. Skipping the optimize step on a clustered panel is the one way this upgrade goes wrong.
  • It does not replace a log viewer you may already have (Opcodes Log Viewer, Laravel Log Viewer) or an observability stack — it is a context-switch eliminator for people already inside the Filament panel. Frame it that way to avoid an either/or debate.
  • If a competing Filament log page exists, watch for slug/navigation-group/cluster collisions during registration. The cluster fix reduces the surface but does not eliminate collision risk.

Compatibility

  • Pin to an exact version (v1.0.2 or later if clusters are in play) and re-verify on every Filament minor bump. Filament's plugin API has moved between majors; an unpinned constraint here is how you get a broken admin panel after an unrelated composer update.
  • Because the component cache stores registration output, any Filament or plugin upgrade should be followed by a cache rebuild in the same deploy step. Treat "optimize" as part of the upgrade contract, not an optional perf tweak.
  • Confirm no conflict with other packages registering pages into the same navigation group, and check that assets (JS for keyboard shortcuts, CSS for the slide-over) publish cleanly under your asset pipeline.

Sequencing

  1. Spike (local): install v1.0.2, register, point at a real log corpus including a large file, a rotated .gz, and a channel that does not exist. Confirm graceful behavior on each.
  2. Placement check: if multi-panel or clustered, run filament:optimize, verify the page lands in the correct cluster in each panel, and confirm other placement options are panel-scoped.
  3. Security review: enumerate reachable paths, verify traversal/symlink handling, confirm the authorization gate and that the download action is gated identically.
  4. Gate and constrain: behind a permission (super-admin or an on-call role), behind an environment flag, enabled in staging first.
  5. Staging soak: synthetic large files, concurrent viewers, rotated logs — measure request latency and memory.
  6. Production: enable for a named pilot group, monitor the panel's own error rate.
  7. Decide own-vs-borrow: given the surface area, a fork or in-house reimplementation is a credible exit if upstream goes quiet.

Operational Impact

Maintenance

  • Low ongoing effort but non-zero ownership. Budget: track releases monthly, pin the version, and accept that a Filament major upgrade may strand the package.
  • Add one deploy-checklist line: re-run filament:optimize after installing or upgrading the package or Filament itself. This is the only new operational tax introduced by v1.0.2 and it is a process fix, not an engineering one.
  • The v1.0.1 → v1.0.2 patch cadence is encouraging — an issue was reported and fixed rather than left open. That is one data point, not a trend; do not plan around upstream responsiveness.
  • The code surface is small enough that vendoring or forking is realistic — worth confirming during the spike by reading the source. If it is a few hundred lines, the "6 stars" objection largely evaporates because replacement cost is low.

Support

  • Community-only: GitHub issues, no SLA, no commercial backing, no security disclosure policy documented. Escalation path is "we fix it ourselves."
  • For a security-sensitive surface (log contents), the absence of a disclosure process is itself a finding to record in the risk register. Nothing in this release changes that.

Scaling

  • Every page view is a synchronous filesystem read on the web node. Cost scales with file size × concurrent viewers, not with user count in any benign way.
  • Two admins opening a 1 GB log simultaneously can consume meaningful worker memory and time. Without a documented size cap or streaming read, assume worst case.
  • Mitigate by keeping files bounded (aggressive logrotate + retention, daily channels with short retention), restricting access to a small group, and treating it as a tail-inspection tool rather than an archive browser.
  • Does not scale across nodes unless logs live on shared storage. It is not a substitute for centralized log aggregation and should not be pitched as one.

Failure modes

  • Unreadable or permission-denied files (web user cannot read storage/logs) → empty or erroring viewer; silent failure is worse than a clear error.
  • Files disappear mid-view due to rotation → stale handle or 404 on download.
  • Oversized file → memory exhaustion or request timeout, potentially taking down the panel page rather than just the slide-over.
  • Compressed rotation archives (.gz) → binary noise unless handled explicitly.
  • Non-standard log formats (JSON lines, custom Monolog formatters) → search and highlighting degrade, match navigation becomes unreliable.
  • Stale component cache after upgrade → page registers unclustered or in the wrong panel's placement. Cosmetic, self-inflicted, and easy to misdiagnose as a package regression.
  • Sensitive data exposure to an under-privileged role if the authorization gate is omitted or if panel access is broadly granted.
  • Misconfigured channel path (env-specific stream handler) → unintended file readable; low likelihood since config is deploy-controlled, but worth an explicit assertion.
  • Filament upgrade breaks plugin registration → admin panel boot failure, which is a high-severity incident because it takes the whole panel down, not just the log page.

Ramp-up

  • Near-zero for users: it is a read-only viewer with documented keyboard shortcuts (/, n, N, g), so no training program is needed — a one-line note in the on-call runbook suffices, plus a line on the deploy checklist about the Filament component cache.
  • For the team: under an hour for a Filament developer to install; half a day for the security review and staging validation, plus a short detour if the admin is multi-panel and placement needs verifying. Total cost to a decision is roughly one engineer-day.
  • Net TPM read: a cheap, low-ceremony convenience that measurably shortens incident triage for support engineers working inside the panel. v1.0.2 is a narrow bug fix — cluster placement now works and stale-cache behavior is documented — and it does not move any of the security, sizing, or bus-factor findings. Worth adopting with an explicit authorization gate, an environment flag, a bounded-log-retention precondition, an optimize step in the deploy checklist, and a standing willingness to own the code if upstream goes quiet.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums