pub trait AuditLogStore: Send + Sync {
// Required methods
fn log<'life0, 'async_trait>(
&'life0 self,
event: AuditEvent,
) -> Pin<Box<dyn Future<Output = Result<(), AuditError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn query<'life0, 'async_trait>(
&'life0 self,
filters: AuditQueryFilters,
) -> Pin<Box<dyn Future<Output = Result<Vec<AuditEvent>, AuditError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn count<'life0, 'async_trait>(
&'life0 self,
filters: AuditQueryFilters,
) -> Pin<Box<dyn Future<Output = Result<u64, AuditError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
}Expand description
Trait for pluggable audit logging
Implementations might be:
- PostgreSQL (append-only)
- Elasticsearch/OpenSearch
- CloudWatch Logs
- Splunk
- File-based logging
Required Methods§
Sourcefn log<'life0, 'async_trait>(
&'life0 self,
event: AuditEvent,
) -> Pin<Box<dyn Future<Output = Result<(), AuditError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn log<'life0, 'async_trait>(
&'life0 self,
event: AuditEvent,
) -> Pin<Box<dyn Future<Output = Result<(), AuditError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Log an audit event (never fails - critical for security)
Sourcefn query<'life0, 'async_trait>(
&'life0 self,
filters: AuditQueryFilters,
) -> Pin<Box<dyn Future<Output = Result<Vec<AuditEvent>, AuditError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn query<'life0, 'async_trait>(
&'life0 self,
filters: AuditQueryFilters,
) -> Pin<Box<dyn Future<Output = Result<Vec<AuditEvent>, AuditError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Query audit events (for admin dashboards, compliance)
Sourcefn count<'life0, 'async_trait>(
&'life0 self,
filters: AuditQueryFilters,
) -> Pin<Box<dyn Future<Output = Result<u64, AuditError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn count<'life0, 'async_trait>(
&'life0 self,
filters: AuditQueryFilters,
) -> Pin<Box<dyn Future<Output = Result<u64, AuditError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Count events matching filters
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".