Access Log
The Access Log page displays detailed records of all physical access control events, including PIN entries, RFID card presentations, and the results of access attempts.
Overview
Access Log provides:
- Real-Time Updates: Live log of access events
- Detailed Records: Who, when, where, and result
- Filtering: By user, device, type, result, date
- Security Auditing: Track granted and denied access
- Export: Generate reports for compliance
Viewing Access Events
The main grid displays all access log entries:
Columns:
- ID: Unique log entry identifier
- Timestamp: When access was attempted
- User: Which user attempted access
- Access Device: Which device received credential
- Access Type: PIN, RFID, or REX
- Result: Granted, Denied, Duress, Forced, Held Open, or Error
- Action Details: What action was executed (if granted)
- Reason: Detail behind the result (e.g.
success,unknown_credential,cooldown,lockdown,duress,forced_door,held_open) - Match: Optional facial-recognition match score for the event (see Facial Recognition below). Empty when scoring is disabled or did not run.
Image / Video Capture
Each log row includes a camera icon button. Clicking it opens a modal showing an image (or short video clip, for cloud drivers like Brivo) from the time of the access event.
Snapshot Sources:
GEM checks for snapshots in this order:
- Stored snapshot — If the access log record has a snapshot stored directly (e.g., captured at the time of the event by the access device driver), it is displayed immediately. The stored value can be either a base64 data URI (image bytes) or a fully-qualified
https://…URL pointing at a recording (e.g. Brivo S3-hosted clip). - NVR on-demand lookup — If no stored snapshot exists, GEM retrieves one from the associated NVR using the access device's attributes:
nvr_device_id— ID of the NVR device (e.g., an Axis Camera Station device)nvr_camera— camera/video source identifier on the NVR- The NVR device must support the
snapshotcommand with adate_timeparameter
Snapshot Modal:
- Inline images render as
<img> - URLs ending in
.mp4,.webm,.mov,.m4v,.m3u8, or.ts(or with avideo/*MIME) render as a<video>player with autoplay/controls — used by Brivo clip URLs - For NVR snapshots, the camera name and source type (recording or live) are shown above the image
- If no snapshot is available from either source, an error message is displayed
For Axis Camera Station, cameras are auto-discovered as zones. Use the zone's address as the nvr_camera attribute value on the access device.
Facial Recognition
When enabled, GEM compares the user's profile photo against the snapshot captured at each access event and records an advisory match score on the log row. All processing is local — face detection and embedding inference run entirely on this server using bundled open-source models (YuNet detector + MobileFaceNet embedder). Profile photos and biometric embeddings never leave the installation.
Enabling
Two opt-in toggles must both be on for an event to be scored:
- System-wide — set the
facial_recognition_enabledsystem attribute totrue. Off by default. - Per-user — each user has a
facial_recognition_enabledattribute that defaults totrueonce the system-wide setting is enabled. Users (or admins on their behalf) can flip it tofalseto opt the user out without removing their photo.
A user's profile photo (the image field on auth_user) is automatically embedded when uploaded or changed; the resulting 512-D embedding is stored encrypted as the user's facial_recognition_embedding attribute. If the photo doesn't contain a detectable face, facial_recognition_embedding_error records the reason (e.g. no_face_detected) so the admin knows to upload a clearer photo.
Match Column
The Match column shows one of:
- ✓ NN% (green badge) — match score ≥ 50%. Same person, high confidence.
- ⚠ NN% (amber badge) — score 30–50%. Ambiguous, often caused by poor snapshot quality, bad lighting, or partial face.
- ✕ NN% (red badge) — score < 30%. Likely a different person than the credential's owner.
- off — system-wide toggle is disabled.
- opt-out — user opted out.
- no photo — user has no usable embedding (no profile photo, or photo had no detectable face).
- no face — face was not detected in the event snapshot (dark, blurry, person walked past, etc.).
- — — no
auth_user_idon the event (anonymous credential or unknown PIN). - error — pipeline failure; see server logs.
These bands are starting points, not guarantees. Calibrate against your own population by reviewing a week of scores after enabling — if the green band is producing too many ambiguous results, raise the threshold; if mismatches are scoring above 50%, lower it.
Click-to-Compare
Clicking the camera icon on a row that has a match score opens the snapshot modal in side-by-side compare mode — the user's profile photo on the left, the event snapshot on the right, and the match score below. Useful for quick visual confirmation when investigating low-score events or duress alerts.
Advisory, Not Authoritative
Match scores are recorded for audit and review. They do not grant or deny access — access decisions remain governed entirely by access control rules and credentials. Treat scores as a signal, not a verdict.
Privacy & Compliance
Some jurisdictions (e.g., Illinois BIPA, EU/UK GDPR Article 9) regulate the collection, use, retention, and disclosure of biometric identifiers. Before enabling system-wide, confirm the feature is lawful in your installation's location and that you have any required consents from individuals whose photos you upload. The Terms of Service includes a dedicated facial recognition section that admins re-acknowledge.
Filtering
Filter Panel
Located at top of page:
User Filter:
- Dropdown of all users with access control
- Select to show only that user's attempts
Device Filter:
- Dropdown of all access control devices
- Select to show only that device/location
Access Type:
- All Types
- PIN: PIN code entries only
- RFID: Card presentations only
Result:
- All Results
- Granted: Successful access only
- Denied: Failed attempts only
- Forced: Door opened without an authorized unlock in the prior 10 s grace window
- Held Open: Door stayed open past the rule's
held_open_threshold_sec - Error: System errors during access attempt
Date Range:
- From: Start date
- To: End date
Quick Range:
- 1D — Last 24 hours
- 7D — Last 7 days
- 30D — Last 30 days
- 90D — Last 90 days
The page accepts a range URL parameter — ?range=today sets From to midnight today, and ?range=1, ?range=7, etc. set the corresponding rolling window. The Dashboard's "access events today" stat links here using ?range=today.
Applying Filters
Filters apply in real-time as you change selections.
Clear Filters
Click Clear Filters to reset all filters to defaults.
Result Color Coding
Access results are color-coded for quick scanning:
- ✓ Granted (green): Access successfully granted
- ✕ Denied (red): Access denied
- Duress (red badge): Granted, but the user entered their duress PIN — the rule's duress macro fired silently. The audit row uses
result=granted, reason=duressso the event is easy to find. - ⚡ Forced (red pill): Door opened without an authorized unlock in the prior 10 s — inferred from a contact-state transition. Logged but not asserted as ground truth.
- ⏱ Held Open (amber pill): Door stayed open past the rule's
held_open_threshold_sec. The timer re-arms so a propped door keeps reminding rather than going silent. - ⚠ Error (orange): System error during access attempt
Access Event Details
Each log entry includes:
Granted Access
When access is granted:
- User identified
- Credential matched
- Schedule allowed
- Action executed (command or macro)
- Timestamp of access
Denied Access
When access is denied:
- User not found
- Invalid credential
- Outside schedule (wrong day/hour)
- Disabled access rule
- Disabled user account
Denial Reasons:
- "Invalid PIN"
- "User not authorized"
- "Access rule disabled"
- "Outside schedule hours"
- "Schedule day not permitted"
Error Events
System errors during access:
- Device communication failure
- Database error
- Macro execution failure
- Invalid configuration
Security Monitoring
Failed Access Attempts
Monitor for security threats:
Filter:
- Result: Denied
- Date: Recent (last 7-30 days)
Red Flags:
- Multiple denied attempts in short time (brute force)
- Denied attempts at unusual hours
- Denied attempts from same device repeatedly
- Unknown credential attempts
Actions:
- Investigate if suspicious
- Review access control configuration
- Consider temporary disable if attack suspected
- Change PINs if compromised
- Alert security personnel
Successful Access Auditing
Track who accessed when:
Filter:
- Result: Granted
- User: Specific user (or all)
- Date Range: Audit period
Audit Uses:
- Verify employee access times
- Confirm contractor access during approved hours
- Compliance reporting
- Billing (for service access)
Compliance Reporting
Generating Reports
- Set date range (e.g., last quarter)
- Filter by result: Granted
- Export data (copy or screenshot)
- Format for compliance documentation
Report Includes:
- All successful access events
- User identification
- Location (access device)
- Timestamp
- Action taken
Retention Requirements
Some regulations require access logs:
Common Requirements:
- Healthcare (HIPAA): 6 years
- Finance (SOX): 7 years
- General: 1-3 years
Configure in Data Retention
Deleting Old Logs
Click Delete Old Logs button:
- Prompts for retention period (days)
- Enter number of days to keep
- Confirms deletion
- Deletes all logs older than specified days
Warning: Irreversible deletion. Create backup first if needed.
Use Cases
Daily Security Review
Morning security check:
- Open Access Log
- Filter: Last 24 hours
- Review all denied attempts
- Investigate anomalies
- Verify all granted access is legitimate
User Access Verification
Confirm guest departed:
- Filter by user: guest_user
- Check last access timestamp
- If recent, guest may still be on-site
- If old, safe to disable account
Device Activity Analysis
Monitor specific entry point:
- Filter by device: front_door_keypad
- Review access frequency
- Identify peak access times
- Optimize schedules accordingly
Credential Audit
Verify user credentials working:
- Filter by user
- Review their access attempts
- Identify pattern of failures (PIN forgotten?)
- Assist user or reset PIN
Best Practices
-
Regular Review: Check access log daily for security
-
Investigate Denials: All denied attempts should be explainable
-
Retention: Keep logs per compliance requirements
-
Alerts: Configure notifications for failed access attempts
-
Backup: Export important logs before deletion
-
Patterns: Look for unusual access patterns
-
Correlation: Use the snapshot button to review camera images from access events
Troubleshooting
No Logs Appearing
Check:
- Access control rules configured
- Access control rules enabled
- Users have PINs/RFID configured
- Access device online and working
- Date range includes expected events
Cannot Filter
Check:
- Logs exist for filter criteria
- Date range set correctly
- Filters not too restrictive (no matches)
Cannot Delete Logs
Check:
- Database permissions
- Logs not locked by another process
- Sufficient time for deletion (large delete may take time)
Related Documentation
- Access Control - Configuring access rules
- Users - Managing PINs and credentials
- Access Reports - Access analytics and visualizations
- Data Retention - Log retention configuration