minvws/audit-logger
A Laravel audit logging package that records user actions and model events into a queryable audit trail. Easily log authentication attempts, CRUD changes, and custom entries with configurable storage and a clean API for reviewing activity.
Architecture fit. minvws/audit-logger is a "generic audit logger" published under the Dutch Ministry of Health (VWS) umbrella, which is a strong signal about intent: this is a compliance-oriented package, likely targeting NEN 7510, AVG/GDPR, and government logging baselines rather than general-purpose application logging. That makes it a plausible fit for a Laravel service that must produce an attributable, tamper-evident audit trail for privileged actions (access to patient/citizen data, record mutations, admin actions, export events). It is explicitly not an application logger — TPMs should frame it as a compliance control with its own owners (security, privacy, legal), not as a Log::info() replacement.
Integration feasibility. Low stars (1) and zero dependents mean there is essentially no third-party evidence of production use. Feasibility therefore rests on first-principles inspection: composer.json framework constraints (Laravel 9/10/11, PHP 8.1/8.2/8.3?), the service provider and config-publish surface, the storage driver(s) (database table, file, syslog, SIEM/HTTP sink?), the audit event schema, and whether writes are synchronous. Do not accept the README as the integration contract — verify against the code and a throwaway PoC.
Release 1.1.0 assessment (delta from 1.0.0). This is a low-risk, non-breaking minor release with one substantive change and several housekeeping items:
AuditLoggerInterface added (PR #28) — the only functional change. Architecturally this is a net positive for us: it gives a stable contract to type-hint against, makes the logger swappable and mockable in tests, and lets us put a decorator in front of it (e.g. a fail-closed wrapper or a dual-write shim during migration). It also reduces lock-in — if we later fork or wrap, consumers code to the interface. Action: confirm whether the interface is bound in the service provider (so container resolution works out of the box) or whether we must bind it ourselves in AppServiceProvider; confirm the interface's method signatures are stable enough to decorator-wrap without a version bump breaking us.Technical risk.
Key questions for the vendor/maintainer (or the code, if no maintainer is responsive).
AuditLoggerInterface the intended public extension point, is it container-bound by default, and is it covered by a backwards-compatibility promise?Stack fit. Laravel-native integration is the expected path: install via Composer, publish config, register the service provider, and instrument at the middleware/observer layer. The package name (nl-rdo-php-audit-logger) suggests it may be usable in non-Laravel PHP too — worth confirming, since that reduces coupling if you ever split services. Confirm PHP and framework constraints before committing; do not assume Laravel 11 support from a 2026-dated release alone. Target 1.1.0 as the floor, since AuditLoggerInterface is the cleanest seam for our integration regardless of whether we adopt the rest of the package wholesale.
Migration path.
AuditLoggerInterface from day one. This lets us insert a dual-write decorator during migration and a fail-closed wrapper later without touching call sites.Compatibility. Check for conflicts with Monolog handlers, Sentry, and any existing audit/compliance tooling. Verify the package does not silently hijack the default Log channel. Validate queue compatibility if writes are async. 1.1.0 introduces no known breaking changes, so an upgrade from 1。0.0 in the PoC is low-cost — but re-run the PoC suite anyway and diff the public API to confirm the interface addition is the only surface change.
Sequencing. PoC on 1.1.0 (1 sprint) → security, privacy, and legal review incl. DPIA impact and EUPL check (1–2 sprints, parallelizable) → taxonomy + instrumentation in one context → SIEM sink + retention policy → phased rollout to all privileged surfaces. Budget 6–10 weeks end-to-end for a mid-sized Laravel service. The 1.1.0 interface does not shorten this; the schedule is dominated by governance and taxonomy work, not code.
Maintenance. Assume you will own this. With 0 dependents and 1 star, there is no community to absorb upgrades. TPM actions: pin the version, vendor the source into your repo if license permits (EUPL allows it; confirm obligations), assign a named internal owner, and set a quarterly review against upstream releases. If the upstream maintainer disappears, your team becomes the maintainer — price that in. The evidence from 1.1.0 (second contributor, dependabot-enabled CI, clean semver) slightly improves the outlook but does not change the plan.
Support. No commercial support path is evident. Escalation is "read the source." Treat the upstream repo as an input, not a dependency you can lean on. Open a security disclosure channel with VWS if one exists.
Scaling. Audit volume scales with read/write activity, not user count — data-export and bulk operations can generate large event bursts. Design for: async/batched writes via queue, backpressure handling, a separate storage target from the OLTP database, index strategy on actor/timestamp/action, and log rotation. Cost is dominated by storage and SIEM ingestion, not compute; model this early.
Failure modes to plan for.
AuditLoggerInterface signatures change in a subsequent minor release, our decorators and mocks break. Guard against this by wrapping the package interface in our own thin internal contract at the boundary.Ramp-up. Engineers need roughly 2–4 days to be productive with the package itself and 1–2 weeks to be competent in the audit domain (taxonomy, retention, tamper-evidence, regulatory expectations). The package is the easy part; the compliance reasoning is the real onboarding cost. TPM should pair each engineer with a security/privacy stakeholder for the first instrumented context. The 1.1.0 interface marginally reduces ramp-up cost, since new engineers can read one contract instead of the implementation.
Bottom line for the TPM. This remains a strategically credible, operationally immature dependency: strong provenance (VWS, EUPL-1.2, compliance-aligned intent), weak ecosystem evidence (1 star, 0 dependents). Release 1.1.0 is a small but genuinely useful step — a public AuditLoggerInterface gives us a clean seam for DI, testing, dual-write migration, and a central fail-closed policy, and signs of a second contributor plus automated dependency updates nudge the maintenance outlook from "single point of failure" to "thin but non-zero." It does not resolve any of the substantive compliance unknowns (tamper-evidence, retention, PII handling, fail-open/closed semantics). Leverage it as a foundation you co-own, not an off-the-shelf product — invest in legal review, taxonomy design, a SIEM sink, and an internal maintainer, and it becomes a defensible compliance asset; skip those steps and it becomes unmonitored risk. Recommend adopting 1.1.0 for the PoC, coding against the interface, and re-running this assessment at the next minor.
How can I help you explore Laravel packages today?