Audit.NET 开源项目教程
1. 项目介绍
Audit.NET 是一个可扩展的框架,用于在 .NET 和 .NET Core 中审计执行的操作。它能够生成带有证据的审计日志,以便重建和检查影响特定操作或过程的活动。通过 Audit.NET,您可以生成有关正在执行的操作的跟踪信息,收集环境信息(如调用者用户 ID、机器名、方法名和异常),包括执行时间,并提供一个可扩展的机制来丰富日志和处理审计输出。
主要特性
- 支持多种系统交互扩展,如 Entity Framework、MVC、WebAPI、WCF、文件系统、SignalR、MongoClient 和 HttpClient。
- 提供多种输出扩展,支持将日志记录到 JSON 文件、事件日志、SQL、MySQL、PostgreSQL、RavenDB、MongoDB、AzureBlob、AzureTables、AzureCosmos、Redis、Elasticsearch、DynamoDB、UDP 数据报、Channels 等。
- 包含输出包装器,方便封装其他数据提供程序,用于多种目的,如弹性或懒加载,例如 Polly、Lazy、Deferred 和 Conditional。
2. 项目快速启动
安装 NuGet 包
在 Package Manager Console 中运行以下命令安装 Audit.NET:
PM> Install-Package Audit.NET
创建审计范围
以下是一个简单的示例,展示如何创建和使用审计范围:
using Audit.Core;
using Audit.NET;
// 配置审计数据提供程序
Audit.Core.Configuration.DataProvider = new JsonFileDataProvider()
{
FileName = "auditlogs.json"
};
// 创建审计范围
using (var scope = AuditScope.Create(new AuditScopeOptions()
{
EventType = "Order:Update",
TargetGetter = () => new { OrderId = 123, Status = "Shipped" },
ExtraFields = new { User = "admin" }
}))
{
// 执行操作
// ...
}
配置审计事件
您可以通过 AuditScopeOptions
配置审计事件:
var options = new AuditScopeOptions()
{
EventType = "Order:Create",
TargetGetter = () => new { OrderId = 456, Status = "New" },
ExtraFields = new { User = "user1" },
DataProvider = new SqlDataProvider(connectionString: "YourConnectionString")
};
using (var scope = AuditScope.Create(options))
{
// 执行操作
// ...
}
3. 应用案例和最佳实践
应用案例
审计数据库操作
使用 Entity Framework 扩展审计数据库操作:
public class MyDbContext : AuditDbContext
{
public MyDbContext(DbContextOptions<MyDbContext> options) : base(options)
{
}
public DbSet<Order> Orders { get; set; }
}
// 在操作中创建审计范围
using (var scope = AuditScope.Create("Order:Update", () => order))
{
context.SaveChanges();
}
审计 Web API 请求
使用 WebAPI 扩展审计 Web API 请求:
public class MyApiController : ApiController
{
[AuditApi(EventType = "API:Request", IncludeResponse = true)]
public IHttpActionResult Get(int id)
{
// 处理请求
return Ok();
}
}
最佳实践
- 集中配置:使用
IAuditScopeFactory
进行集中配置,确保所有审计范围的一致性。 - 异常处理:确保在审计范围内捕获和处理异常,以避免丢失审计信息。
- 性能优化:选择合适的数据提供程序和输出格式,以优化性能和存储。
4. 典型生态项目
Entity Framework Core
Audit.NET 提供了 Audit.EntityFramework.Core
扩展,用于审计 Entity Framework Core 的操作。
ASP.NET Core MVC
使用 Audit.Mvc.Core
扩展,可以轻松审计 ASP.NET Core MVC 中的请求和响应。
ASP.NET Core WebAPI
Audit.WebApi.Core
扩展允许您审计 ASP.NET Core Web API 的请求和响应。
SignalR
通过 Audit.SignalR
扩展,您可以审计 SignalR 的实时通信。
其他
- Azure Blob Storage:使用
AzureBlobDataProvider
将审计日志存储在 Azure Blob Storage 中。 - Elasticsearch:通过
ElasticsearchDataProvider
将审计日志索引到 Elasticsearch。
通过以上模块,您应该能够快速上手并有效地使用 Audit.NET 框架进行项目审计。希望这篇教程对您有所帮助!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考