Skip to content

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.

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.

  • PageMotor 0.8.2b or later
  • EP Suite base class (bundled)
  1. ep-audit-log.zip comes with an EP Suite licence — ElmsPark supplies it directly (see EP Suite plugins); after install it updates through your site’s Updates screen.
  2. Upload via Plugins → Manage Plugins.
  3. Activate. Logging starts immediately.
SettingPurpose
RetentionHow long to keep log entries. Choose 30, 60, 90, 180, 365 days, or Forever. Default 90.
Status cardsDashboard shows total events and today’s events, no setting needed.

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.

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.

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.

“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 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.

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.

  • Settings language menu. The language menu in this plugin’s settings now lists only the languages it is actually translated into, plus English, so you can no longer pick a language that changes nothing.
  • Danish. Adds a Danish translation.
  • The Docs link on the Plugins screen now opens this plugin’s page on documentation.elmspark.com.
  • Fixes “Your session has expired. Please reload to ensure your security.” on PageMotor 0.11. The message appeared on this plugin’s admin screens even though you were signed in perfectly normally, and whatever you were doing failed to save.
  • Nothing was wrong with your session. PageMotor 0.11 started handling part of the security check that this plugin was already handling itself, and the two together made every save look invalid. The plugin now checks whether PageMotor has already done it.
  • Visitors who were not signed in were never affected, on any version.
  • There is nothing to reconfigure, and nothing else changed.