EP Audit Log
EP Audit Log is a simple activity log. It watches your database for changes to content, users, and logins and records what happened, when, and by whom. Other plugins can also record their own events through a public API.
Published by ElmsPark Studio.
Overview
Section titled “Overview”Three event sources:
- Content changes. Pages created, edited, deleted.
- User events. Registrations, logins, password resets.
- Plugin events. Anything another EP Suite plugin chooses to log, via a static API.
The plugin works by observing the database every 30 seconds rather than hooking into every content save. This keeps it cheap to run and captures events from any code path that writes to the content tables, including direct SQL, API calls, and admin edits alike.
Requirements
Section titled “Requirements”- PageMotor 0.8.2b or later
- EP Suite base class (bundled)
Installation
Section titled “Installation”- Download
ep-audit-log.zipfrom the EP Suite downloads page. - Upload via Plugins → Manage Plugins.
- Activate. Logging starts immediately.
Settings
Section titled “Settings”| Setting | Purpose |
|---|---|
| Retention | How long to keep log entries. Choose 30, 60, 90, 180, 365 days, or Forever. Default 90. |
| Status cards | Dashboard shows total events and today’s events, no setting needed. |
The log viewer
Section titled “The log viewer”The settings page shows the 100 most recent events in a colour-coded table:
- Green for content creation and user registration
- Blue for updates, logins, and general activity
- Red for deletions and failed logins
Each row shows timestamp, actor (user ID or “system”), event type, and a short description.
Logging custom events from another plugin
Section titled “Logging custom events from another plugin”EP_Audit_Log::log([ 'event' => 'custom_event', 'description' => 'Something notable happened', 'user_id' => $motor->user->id ?? 0, 'metadata' => ['key' => 'value'],]);The metadata field is free-form JSON stored alongside the entry. Use it for details the log viewer can’t display natively.
Retention and pruning
Section titled “Retention and pruning”Entries older than your configured retention are deleted automatically during a daily cleanup. On a site with heavy activity, this keeps the table at a sensible size. If you need audit records for longer than a year, pick Forever and budget for a large table.
Troubleshooting
Section titled “Troubleshooting”“Events appear in the log up to 30 seconds after they happen”
Section titled ““Events appear in the log up to 30 seconds after they happen””That’s the observation throttle. The plugin runs its database scan at most every 30 seconds. If you need real-time audit, use EP_Audit_Log::log() directly from your event source.
“Failed logins don’t appear”
Section titled ““Failed logins don’t appear””Failed logins are not currently tracked by the automatic observer — only successful ones. If you need them, log them explicitly from your auth code via the static log() method.
“I cleared the log but it looks like entries are coming back”
Section titled ““I cleared the log but it looks like entries are coming back””The log is cleared with a SQL TRUNCATE, but as soon as anyone creates or edits content, the next 30-second scan captures that and logs it. That is working as intended.
Feedback and corrections
Section titled “Feedback and corrections”For a quick question about this plugin, EP Support inside your admin is the fastest option. The chat widget sits on every EP plugin settings page and knows which one you’re on, with starter questions and links preloaded for that exact screen.
For anything bigger — a bug report, a feature request, or a “how do I…” that needs a real reply — open a ticket at help.elmspark.com. A real person, helped by AI, writes the reply. Usually within a few hours. Tickets don’t disappear into the void.