ABP框架中的日志功能完全解析

2019-05-22 14:58:22于丽

几行代码就调用了Log4Net这个日志记录组件,工程中的Log4Net库是在 nuget package包中的,你也可以换成其他日志组件库,但是代码不用做任何改变。因为,我们的框架是通过依赖注入实现日志记录器的!

Client side(客户端)

最后,更厉害的是,你还可以在客户端调用日志记录器。在客户端,ASP.NET Boilerplate框架有对应的 javascript 日志API,这意味着你可以记录下来浏览器的日志,实现代码如下:

abp.log.warn('a sample log message...'); 

 附上:客户端javascript的api,这里要说明的是,你可以使用console.log在客户端输出日志,但是这个API 不一定支持所有的浏览器,还有可能导致你的脚本出现异常,你可以使用我们的api,我们的是安全的,你甚至可以重载或者扩展这些api。

abp.log.debug('...');
abp.log.info('...');
abp.log.warn('...');
abp.log.error('...'); 
abp.log.fatal('...');


审计跟踪日志
ABP提供了能够为应用程序交互自动记录日志的基础设施,它能记录你调用的方法的调用者信息和参数信息。从根本上来说,存储区域包含:

tenant id(相关的租户Id), user id(请求用户Id), server name(请求的服务名称【调用方法对应的类】), method name(调用方法名称), parameters(方法的参数【JSON格式】), execution time(执行时间), duration (执行耗时时间【通常是毫秒】), IP address (客户端IP地址), computer name(客户机名称), exception (异常【如果方法抛出异常】)等信息。

有了这些信息,我们不仅能够知道谁进行了操作,还能够估算出应用程序的性能及抛出的异常。甚至更多的,你可以得到有关应用程序的使用情况统计。

审计系统使用IAbpSession接口来获取当前用户Id和租户ID。

注意:关于IAuditingStore接口

审计系统使用IAuditingStore接口来保存审计信息。module-zero项目是这个接口的完整实现,当然你也可以通过自己的方式来实现这个接口。如果你不想自己实现这个接口,SimpleLogAuditingStore类可以直接拿来使用,它是实现方式是将审计信息写入日志中。

 配置:
可以在你的模块初始化方法(PreInitialize)中使用Configuration.Auditing的属性来配置审计,Auditing属性默认是启用状态(即true)。你可以禁用它,如下图所示:

public class MyModule : AbpModule
{
  public override void PreInitialize()
  {
    Configuration.Auditing.IsEnabled = false;
  }

  //...
}

以下是审计配置的属性:

IsEnabled: 用于设置完全启用或禁用审计系统。默认值:true.
IsEnabledForAnonymousUsers:如果设置成ture,未登陆的用户的审计日志也会保存。默认值: false.
MvcControllers: 在ASP.NET MVC 控制器中使用审计日志
IsEnabled: 在ASP.NET MVC中启用(true)或禁用(false)审计日志. 默认值: true.
IsEnabledForChildActions: 为MVC actions启用(true)或禁用(false)审计日志. 默认值: false.
Selectors: 选择使用其他类来处理审计日志的存储。