MSDN Visual系列:SharePoint中用于审计日志的自定义实体的编写
原文:http://msdn2.microsoft.com/en-us/library/bb466221.aspx
SharePont提供了非常灵活的审计功能,允许我们查看用户对网站集中内容所作的操作。比如,我们可以自动审计用户的查看,更新,删除列表项或文档的操作,也可以审计用户查看站点中页面的操作。默认的审计机制一个重要的限制是,我们不能对部署到\LAYOUTS目录下的应用程序页面进行审计。
如果想要对用户访问自定义页面的操作进行审计,我们必须通过编写自定义的审计实体(audit entries),来扩展SharePoint的审计日志。我们可以将自定义审计实体编写在任何允许审计的对象的上下文中,如SPSite,SPWeb,SPList或SPListItem。
允许审计的对象,如SPSite,SPWeb,SPList或SPListItem都包括了一个Audit属性。这个属性包括了对SPAudit对象的引用。该对象包括一个名为WriteAuditEvent的方法。下面的示例是在一个自定义应用程序页面中编写的一个自定义审计实体,用于SPListItem对象级的审计。
SPSite siteColl = SPContext.Current.Site; SPWeb site = SPContext.Current.Web; string ListId = Request.QueryString["ListId"]; string ItemId = Request.QueryString["ItemId"]; SPList list1 = site.Lists[new Guid(ListId)]; SPListItem item1 = list1.Items.GetItemById(Convert.ToInt32(ItemId)); item1.Audit.WriteAuditEvent(SPAuditEventType.Custom, "CustomViewAuditEvent", "");
在我们通过WriteAuditEvent方法编写了自定义审计实体,用户使用自己的标识信息执行该代码后,SharePoint会纪录当前用户的名称。这就意味着我们应该在调用WriteAuditEvent之前的代码中避免写那些提升权限或模拟用户的代码,以免导致错误的用户与审核实体关联在一起。
当我们调用WriteAuditEvent时,第一个参数是个枚举值,类型为SPAuditEventType,该参数指定我们创建的审计实体的类型。第二个参数是个字符串,用于指定审核源的名字。
item1.Audit.WriteAuditEvent(SPAuditEventType.Delete, "MySource", "");
传递给WriteAuditEvent的第三个参数是个可以随意写任何内容的字符串,我们可以用来传递任何想要纪录到自定义审计实体的日志中的信息。我们可以传递一个特定命名空间下的XML文档,这样,基于特定的用户操作,就可以在自定义的审计实体所对应的审计日志中纪录下任何类型的信息,只要我们愿意。
item1.Audit.WriteAuditEvent(SPAuditEventType.Custom, "MySource", "<MyData>MyValue</MyData>");
当我们在实体的审计日志中写入自定义的XML文档时,必然决定我们还需要补充一部份代码,用于阅读这些审计实体并解释出其中XML文档部分的数据。
查看视频