ABP对审计功能封装的非常好,虽然是很简单的功能,但是抽象出来并不容易,接下来看看作者是怎么抽象的。
一般地,要保存的字段是:
tenant id(相关的租户Id),
user id(请求用户Id),
server name(请求的服务名称【调用方法对应的类】),
method name(调用方法名称),
parameters(方法的参数【JSON格式】),
execution time(执行时间),
duration (执行耗时时间【通常是毫秒】),
IP address (客户端IP地址),
computer name(客户机名称),
exception (异常【如果方法抛出异常】)等信息。
审计系统使用IAbpSession来获得当前的UserId和TenantId。
1、配置
审计日志默认是开启的,可以用如下代码关闭
public class MyModule : AbpModule{ public override void PreInitialize() { Configuration.Auditing.IsEnabled = false; //关闭审计日志,默认为True Configuration.Auditing.IsEnabledForAnonymousUsers = false; //未登录的用户是否记录日志,默认false Configuration.Auditing.MvcControllers.IsEnabled = false; //用于为MVC控制器开启或关闭审计。默认为true(MVC控制器审计单独配置) Configuration.Auditing.MvcControllers.IsEnabledForChildActions = true; //用于为子MVC action开启或关闭审计。默认为false。 Configuration.Auditing.Selectors.Add( //如果你不喜欢为应用服务保存审计日志,那么你可以通过名称移除选择器。 new NamedTypeSelector( "ABP.Application", type => typeof(IApplicationService).IsAssignableFrom(type) )); }}
也可以为一个单独的类或方法使用Audited和 DisableAuditing特性
[Audited]public class MyClass{ public void MyMethod1(int a) { //... } [DisableAuditing] public void MyMethod2(string b) { //... }}
2、审计接口关联字段图