mblsolutions/audit-logging
mblsolutions/audit-logging provides simple audit trails for Laravel apps, capturing model create, update, and delete events with changed values and user attribution. Helps teams review activity, debug issues, and support compliance.
Architecture fit Audit logging is a cross-cutting concern in Laravel, and the right shape for it is a driver/manager pattern behind a stable contract — the same pattern Laravel uses for Log, Queue, Filesystem, and Mail. Introducing a CloudWatch driver as an additive release implies the package already separates the audit event (actor, subject, event name, before/after payload, IP, request ID) from the persistence backend. That is the architecture we want: the domain-facing API stays fixed while sinks are swappable. Audit writes are append-only, write-heavy, and rarely read from inside the application, which maps well to a log-shipping backend like CloudWatch and poorly to a growing relational table under high tenant volume.
Integration feasibility v2.0.1 → v2.1.0 is a minor bump with one feature and no deprecations or breaking changes in the notes. Integration risk is therefore mostly additive: install, publish config, select the driver, configure credentials. The real feasibility question is not whether it installs but whether the delivery semantics are strong enough to sit on a compliance path. Release notes as published are a changelog line only — no configuration reference, no schema description, no failure behavior documented.
Technical risk
PutLogEvents per audit event adds latency to every user request and will throttle under load. The driver must batch and back off.Key questions
Stack fit Strong only if we are already an AWS shop using CloudWatch for application logs. If so, the audit driver should reuse the existing region and credential configuration rather than introducing a second AWS config surface. If we are not on AWS, this driver is inert and v2.1.0 carries no value for us.
Migration path Do not make CloudWatch the system of record on day one. Keep the current audit store primary, add CloudWatch as an additional sink, dual-write for a defined soak window, reconcile event counts between the two, then decide whether CloudWatch becomes primary or remains the immutable secondary copy. CloudWatch Logs Insights is good for search and incident triage but awkward for relational joins, so the existing store likely retains a query role regardless.
Compatibility
Additive minor release; pin to ^2.1 and verify the PHP/Laravel support matrix is unchanged from 2.0.x. Confirm no config file key renames shipped quietly alongside the new driver.
Sequencing
Maintenance Low upstream activity and a thin maintainer base. Adopting the driver means we own the AWS SDK path and any breakage in it. Budget periodic review of upstream releases, and confirm the driver contract is clean enough that we can implement an in-house sink if the package is abandoned.
Support No vendor; GitHub issues only. Document an internal runbook covering credential rotation, log group provisioning, and what to do when the sink is unreachable.
Scaling CloudWatch ingest scales, but throttling is the practical ceiling and requires batching plus exponential backoff. Cost is the bigger surprise: ingestion and storage are billed by volume, and verbose before/after audit payloads inflate that quickly. A busy multi-tenant application can generate meaningful spend with no code change. Model cost per 1M audit events before production rollout.
Failure modes
logs:* on *) → security review finding.Ramp-up Configuration is low-effort; compliance sign-off is not. Expect to produce documented retention, access controls, and evidence that no events are dropped under failure. Treat v2.1.0 as a pilot candidate, not a production default, until the delivery semantics in the key questions above are answered in writing.
How can I help you explore Laravel packages today?