Audit logging tracks significant activity within PressPrimer Assignment, creating a detailed record for compliance requirements, troubleshooting, and accountability. Every change to assignments, submissions, files, groups, rubrics, and settings is recorded along with who made the change and when.
What Gets Logged
The audit log captures events across eight categories:
- Assignments: Created, updated, deleted, published, archived
- Submissions: Created, submitted, grading started, graded, returned, passed, failed
- Grading: Saved, returned, sessions started
- Rubrics: Created, updated, deleted, attached to assignments, scored (requires Educator)
- Settings: Plugin settings, white-label settings, AI provider settings, retention period changes
Each log entry records the event type, the affected object, the user who performed the action, a timestamp, and relevant details about what changed.
Configuring Audit Settings
Navigate to Assignments > Settings and select the Audit Log tab.

Enable/Disable the Audit Log
A master toggle at the top of the tab turns audit logging on or off site-wide. When disabled, no events are captured and the audit log table stops growing. Existing log entries are preserved.
Category Controls
Each of the event categories has its own enable/disable toggle. You can selectively capture only the events you care about.
Retention Period
Set how long audit logs are retained before automatic cleanup. The default is 365 days. Set to 0 to keep logs indefinitely (note: this will increase database size over time). A daily background process removes entries older than the retention period, in batches of 1,000 rows per run to avoid database strain.
Retention changes take effect immediately. Shortening the retention period causes the next cleanup run to remove any entries that are now older than the new limit.
Manual Purge
The Audit Log report includes a Purge Logs option for administrators who need to delete the entire log immediately (for example, before handing off a site or after a test run). This action cannot be undone — you’ll need to type DELETE AUDIT LOG as confirmation before it runs. The purge itself is logged as a system.audit_manual_purge event so there’s a record that it happened.
Privacy
IP addresses are intentionally not collected. Collecting IPs would trigger disclosure and retention requirements under regulations like GDPR without adding meaningful accountability value beyond what other fields already provide.
The audit log can optionally capture the user agent string (browser and device info) of the request, which helps identify which device was used for a particular action.
Viewing the Audit Trail
Navigate to Assignments > Reports and click the Audit Trail card.
The report displays a chronological list of logged events with filtering options:
- Event Type: Filter by specific event types (e.g., only show submission grading events)
- Category: Filter by category (assignment, submission, file, group, rubric, settings, security, system)
- User: Filter by the user who performed actions
- Date Range: View events within a specific time period
- Object: Filter by a specific assignment, submission, or other object
Results are paginated at 50 rows per page. Each row shows the timestamp, event type, category (as a colored badge), the affected object linked to the relevant admin screen when possible, the actor, and a short human-readable summary. Click any entry to expand it and view the full event data.
Audit Log Integrity
Audit logs are append-only by design. Once an event is logged, it cannot be modified or deleted through the normal interface. The only ways entries are removed are:
- Automatic cleanup based on the retention period
- A manual purge initiated by an administrator (which is itself logged)
This ensures the audit trail remains a reliable record of what actually happened.
Developer Hooks
Enterprise provides hooks for developers who need to customize audit behavior:
pressprimer_assignment_enterprise_should_log_event— filter that can returnfalseto suppress specific eventspressprimer_assignment_enterprise_audit_event_logged— action fired after an event is writtenpressprimer_assignment_enterprise_audit_log_pruned— action fired after automatic cleanup runspressprimer_assignment_enterprise_audit_retention_days— filter that can override the retention period at runtime
