Install
$ agentstack add skill-burakdmir-abp-skills-abp-audit-logging ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
ABP Audit Logging Skill
Trigger
Audit logging, audit trails, entity history, AbpAuditingOptions, IAuditingStore, tracking changes.
Quick Reference
Configuration
Configure(options =>
{
options.IsEnabled = true;
options.IsEnabledForGetRequests = false;
options.ApplicationName = "MyApp";
options.EntityHistorySelectors.AddAllEntities();
});
Entity History (OFF by default — must enable explicitly)
// All entities
options.EntityHistorySelectors.AddAllEntities();
// Specific entities
options.EntityHistorySelectors.Add(new NamedTypeSelector("MySelector",
type => typeof(IEntity).IsAssignableFrom(type)));
// Per entity
[Audited] public class MyEntity : Entity { }
[DisableAuditing] public class SecretEntity : Entity { }
// Specific properties
[DisableAuditing] public string Password { get; set; }
[Audited] public string Name { get; set; } // Only log this
Disable Auditing
[DisableAuditing] public class MyController : AbpController { }
[DisableAuditing] public async Task DoWorkAsync() { }
IAuditingStore (custom implementation)
public class MyStore : IAuditingStore, ITransientDependency
{
public async Task SaveAsync(AuditLogInfo auditInfo) { /* custom storage */ }
}
Contributors
public class MyContributor : AuditLogContributor
{
public override Task PreContributeAsync(AuditLogContributionContext ctx)
{
ctx.AuditLog.ExtraProperties["CorrelationId"] = CorrelationId;
return Task.CompletedTask;
}
}
Configure(o => o.Contributors.Add());
AlwaysLog Selectors
options.AlwaysLogSelectors.Add(new NamedTypeSelector("Critical",
type => typeof(ICriticalService).IsAssignableFrom(type)));
ASP.NET Core Options
Configure(o =>
{
o.IgnoredUrls.Add("/health");
});
AuditLogInfo Key Fields
- UserId, TenantId, ExecutionTime, ExecutionDuration
- ClientIpAddress, BrowserInfo, HttpMethod, Url
- ExceptionMessage, EntityChanges, EntityPropertyChanges
Best Practices
- Entity history OFF by default — enable explicitly
- Use AddAllEntities() only if needed (storage intensive)
- Disable auditing on sensitive properties (passwords, tokens)
- Set ApplicationName for multi-app audit databases
- Don't log GET requests unless debugging
- Monitor storage growth with entity history
- Blazor Server entity history has known limitations (#11682)
Related
[Infrastructure](../abp-infrastructure/SKILL.md) · [DDD](../abp-ddd/SKILL.md) · [Multi-Tenancy](../abp-multitenancy/SKILL.md) · Docs: https://abp.io/docs/latest/framework/infrastructure/audit-logging
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: burakdmir
- Source: burakdmir/abp-skills
- License: MIT
- Homepage: https://abp.io/docs/latest
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.