每一个基于 Abp 的第三方模块都会有一个模块类,模块类的主要作用就是针对于第三方模块进行一些基本配置,以及对一些组件的替换动作。
using Abp.Auditing.MongoDb.Configuration; using Abp.Auditing.MongoDb.Infrastructure; using Abp.Dependency; using Abp.Modules; namespace Abp.Auditing.MongoDb { [DependsOn(typeof(AbpKernelModule))] public class AbpAuditingMongoDbModule : AbpModule { public override void PreInitialize() { IocManager.Register<IAuditingMongoDbConfiguration,AuditingMongoDbConfiguration>(); IocManager.Register<IMongoClientFactory,MongoClientFactory>(); // 替换自带的审计日志存储实现 Configuration.ReplaceService(typeof(IAuditingStore),() => { IocManager.Register<IAuditingStore, MongoDbAuditingStore>(DependencyLifeStyle.Transient); }); } public override void Initialize() { IocManager.RegisterAssemblyByConvention(typeof(AbpAuditingMongoDbModule).Assembly); } } } 2.6 编写集成的扩展方法Abp 模块都会基于 IModuleConfigurations 接口编写一个扩展方法,这样其他基于 Abp 框架的项目开发人员就可以很方便地在其启动模块的 PreInitialzie() 方法当中通过 Configuration.Modules 来进行配置。
/// <summary> /// MongoDb 审计日志存储提供器的配置类的扩展方法。 /// </summary> public static class AuditingMongoDbConfigurationExtensions { /// <summary> /// 配置审计日志的 MongoDb 实现的相关参数。 /// </summary> /// <param>模块配置类</param> /// <param>MongoDb 连接字符串。</param> /// <param>要操作的 MongoDb 数据库。</param> public static void ConfigureMongoDbAuditingStore(this IModuleConfigurations modules,string connectString,string dataBaseName) { var configuration = modules.AbpConfiguration.Get<IAuditingMongoDbConfiguration>(); configuration.ConnectionString = connectString; configuration.DataBaseName = dataBaseName; } } 三、测试新建一个项目,并添加对我们库的引用,在其启动模块当中添加对 AbpAuditingMongoDbModule 模块的依赖,在其 PreInitialize() 方法当中加入以下代码,以配置审计日志相关功能。
[DependsOn(typeof(AbpAuditingMongoDbModule))] public class StartupModule : AbpModule { public override void PreInitialize() { // 其他代码... // 开启审计日志记录 Configuration.Auditing.IsEnabled = true; // 允许记录匿名用户请求 Configuration.Auditing.IsEnabledForAnonymousUsers = true; // 配置 MonggoDb 数据库地址与名称 Configuration.Modules.ConfigureMongoDbAuditingStore("mongodb://username:Zpassword@ip:port","TestDataBase"); // 其他代码... } }启动项目之后,我们尝试访问测试方法,之后来到 MongoDb 数据库当中,查看具体的审计日志信息。
可以看到,所有对接口的请求都被记录到了 MongoDb 当中,这样后续可以基于这些数据进行二次分析。
四、结语Abp.Auditing.MongoDb 包下载地址
Abp.Auditing.MongoDb 包 GitHub 地址