{{ _('Append-only security audit trail — who did what, against which server, and whether it succeeded. Entries cannot be edited or deleted here.') }}
{% if retention_days %}{{ _('Entries older than %(days)s days are archived and purged by the flask audit-archive CLI command.', days=retention_days) }}{% endif %}
| {{ _('Timestamp (UTC)') }} | {{ _('User') }} | {{ _('Server') }} | {{ _('Action') }} | {{ _('Result') }} | {{ _('Detail') }} | {{ _('Source') }} | {{ _('Duration') }} | {{ _('Request') }} |
|---|---|---|---|---|---|---|---|---|
| {{ e.timestamp.strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] }} | {{ e.user.username if e.user else ('#' ~ e.user_id if e.user_id else '—') }} | {{ e.server.name if e.server else (e.server_name or ('#' ~ e.server_id if e.server_id else '—')) }} | {{ e.action }} |
{% if e.result == 'success' %} ✓ {{ _('success') }} {% else %} ✗ {{ _('error') }} {% endif %} | {{ e.error_message or '—' }} | {{ e.source_ip or '—' }}{% if e.hostname %} ({{ e.hostname }}){% endif %} | {{ (e.duration_ms ~ ' ms') if e.duration_ms is not none else '—' }} | {% if e.request_id %} 🔗 {% else %}—{% endif %} |
|
{{ _('No audit entries match the current filters.') }} |
||||||||
{{ _('Showing the most recent %(count)s matching entries (limit 500).', count=entries | length) }}