Download the PHP package wedevelopnl/audit-log without Composer
On this page you can find all versions of the php package wedevelopnl/audit-log. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download wedevelopnl/audit-log
More information about wedevelopnl/audit-log
Files in wedevelopnl/audit-log
Package audit-log
Short Description Immutable, self-contained audit trail for Symfony and Doctrine.
License BSD-3-Clause
Informations about the package audit-log
wedevelopnl/audit-log
Immutable, self-contained audit trail for Symfony and Doctrine.
An audit record answers — durably and credibly — who did what, to what, when, from where, and what changed, and keeps answering it regardless of what later happens to the rest of the system. Records are immutable snapshots of a past fact: they survive deletion of the actor, the subject, and the producing code.
The package ships as a Symfony bundle: a framework-free core (value objects, the
AuditEvent contract, the Recorder and read ports) plus Doctrine persistence and
Symfony runtime adapters, pre-wired by the bundle. The core stays free of Symfony and
Doctrine (ADR-0009).
Requirements
- PHP 8.5+
- Symfony 8.0 (
framework-bundle,security-core,translation, and the components pulled in transitively) - Doctrine (
dbal^4,orm^3.6,doctrine-bundle^3.2)
Installation
There is no Flex recipe; register the bundle manually in config/bundles.php:
The bundle auto-registers its Doctrine DBAL types and the AuditRecordEntity mapping.
See docs/installation.md for the migration, the recommended
append-only database grant, and the services you must provide.
Design
Three responsibilities are deliberately separated:
| Responsibility | Type | Concern |
|---|---|---|
| Describe an act | AuditEvent |
Pure data + phrasing. No clock, identity, or services. |
| Capture the moment | Recorder |
Resolves time, actor, origin, subject label; freezes everything. |
| The durable read shape | AuditRecord |
Immutable snapshot, interpretable without the producing code. |
| Query the trail | RecordReader |
Paginated, filterable reads (AuditQuery → AuditPage) for display. |
The architecture derives from six governing properties — immutable, self-contained, faithful to the moment, attributable, intelligible, queryable. The rationale lives in the Architecture Decision Records.
Usage
Describe an auditable act by implementing AuditEvent (or extending
AbstractAuditEvent for sane defaults):
Record it through the Recorder — the single write seam, autowired by the bundle.
It captures the ambient strands of the moment (clock, acting principal, origin,
subject label) and appends a frozen record:
To attach human-readable subject labels, provide a SubjectLabeller (the default
returns none); read the trail back through RecordReader. See
docs/installation.md for wiring.
Sensitive fields are recorded as changed without their values:
License
BSD 3-Clause. See LICENSE. © 2026 WeDevelop.
All versions of audit-log with dependencies
doctrine/dbal Version ^4.0
doctrine/doctrine-bundle Version ^3.2
doctrine/orm Version ^3.6
psr/clock Version ^1.0
psr/log Version ^3.0
symfony/clock Version ^8.0
symfony/config Version ^8.0
symfony/dependency-injection Version ^8.0
symfony/framework-bundle Version ^8.0
symfony/http-foundation Version ^8.0
symfony/http-kernel Version ^8.0
symfony/security-core Version ^8.0
symfony/translation-contracts Version ^3.5
symfony/uid Version ^8.0