Overview
SAPFIAI implements a comprehensive audit logging system that tracks all security-related events and user actions. This provides accountability, security monitoring, and compliance support.AuditLog Entity
The domain entity stores audit information. Location:src/Domain/Entities/AuditLog.cs:6
Creating Audit Logs
Status Values
SUCCESS- Operation completed successfullyFAILED- Operation failedWARNING- Operation completed with warningsERROR- System error occurred
AuditLogService
Service for creating and querying audit logs. Location:src/Infrastructure/Services/AuditLogService.cs:13
Dependencies
Log Generic Action
Log Login Events
Successful login:Querying Audit Logs
Get User Audit Logs
Get All Audit Logs
AuditLogDto
Audit Action Types
Predefined action types in the system. Location:src/Domain/Enums/AuthEnums.cs:6
Authentication Actions
Usage with Enum
API Endpoints
Location:src/Web/Endpoints/Authentication.cs:85
Get All Audit Logs (Admin)
pageNumber(default: 1)pageSize(default: 20)action(optional): Filter by action type
CanPurge permission
Get User Audit Logs
Logging Console Output
The service logs to console with emojis for visibility:Common Integration Patterns
Authentication Events
Two-Factor Authentication
User Management
Security Events
Error Logging
Best Practices
What to Log
Always log:- Authentication events (login, logout, failures)
- Authorization failures
- Password changes and resets
- User account changes (create, update, delete)
- Role and permission changes
- Security events (IP blocks, suspicious activity)
- Administrative actions
- Critical business operations
- Data access patterns
- Configuration changes
- API calls to external services
- Passwords or secrets
- Sensitive personal data (unless required for compliance)
- High-volume routine operations
Performance Considerations
Fire-and-forget logging:Data Retention
Implement retention policies:Querying Large Datasets
Use indexes on frequently queried fields:Compliance and Security
Immutable logs: Audit logs should never be modified or deleted by users. Only automated retention policies should remove logs. Access control: Restrict access to audit logs to administrators only. Tamper protection: Consider adding cryptographic signatures to audit logs for compliance requirements.Error Handling
Audit logging failures should never break the main operation:Implementation Details
File locations:- AuditLog Entity:
src/Domain/Entities/AuditLog.cs:6 - AuditLogService:
src/Infrastructure/Services/AuditLogService.cs:13 - AuditActionType Enum:
src/Domain/Enums/AuthEnums.cs:6 - Audit Logs Endpoint:
src/Web/Endpoints/Authentication.cs:85 - User Audit Logs Endpoint:
src/Web/Endpoints/Authentication.cs:241