科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道读取SharePoint审核日志中的信息

读取SharePoint审核日志中的信息

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

SharePoint提供了一个强大的审核基础架构,用于对操作列表项,文档,或页面等用户行为进行审核。然而,我们必须通过编写自定义代码的方式利用这一审核架构。

作者:sunmoonfire 来源:blog 2007年9月3日

关键字: 信息 日志 SharePoint SharePoint2007 Office

  • 评论
  • 分享微博
  • 分享邮件
SharePoint提供了一个强大的审核基础架构,用于对操作列表项,文档,或页面等用户行为进行审核。然而,我们必须通过编写自定义代码的方式利用这一审核架构。因为默认情况下,没有哪个功能(feature)利用到它。前面的几篇MSDN Visual系列文章介绍了如何启用审核。这里我们要学习的是如何从审核日志中获取信息,以便将用户的活动信息展示或汇总到我们的自定义SharePoint解决方案中。

读取审核日志,要先从一个特定的网站集范围开始。在从当前网站集中读取审核信息前,我们首先要创建一个SPAuditQuery对象,并用一个SPSite对象初始化它。然后,我们必须在一个允许审核的对象(比如网站集本身)上调用GetEntries方法,并传递一个SPAuditQuery对象作参数。调用GetEntries会返回一个SPAuditEntryCollection对象。接下来,我们就可以通过在代码中用foreach循环来获取该审核日志中的实体(entry)信息了。

SPSite siteCollection = SPContext.Current.Site;
SPAuditQuery wssQuery 
= new SPAuditQuery(siteCollection);
SPAuditEntryCollection auditCol;
auditCol 
= siteCollection.Audit.GetEntries(wssQuery);
// enumerate through audit log and read entries
foreach (SPAuditEntry entry in auditCol) {
    
// inspect entry
}

上面的示例中调用了SPSite对象上的GetEntries方法,来获取整个网站集上的审核实体。我们也可以通过在网站集内的其他审核对象上调用GetEntries方法来缩小范围,比如在网站(SPWeb),列表或文档库(SPList),或列表项、文档(SPListItem)上。

在我们调用GetEntries方法前,还可以先为SPAuditQuery对象指定些参数,只要调用其本身的一些方法就可以。比如,我们可以调用AddEventRestiction以便审核查询只返回特定类型的审核实体,如只返回更新或删除操作相关的审核实体。我们可以调用RestrictToList方法返回特定的一个列表或文档库上的审核实体。我们可以调用RestrictToUser方法返回某用户相关的审核实体。甚至,我们可以调用SetRangeStart和SetRangeEnd来返回某个时间段内的审核信息。

需要注意,读取审核日志是一个受限制的操作,需要站点管理员权限。所以,上面展示的代码只有在当前用户是站点管理员时才能成功运行。如果当前用户没有该权限,比如网站设计人员或读者,运行该代码就会报拒绝访问错误。如果您想给这些没有管理权限的用户显示审核信息,就需要用前一篇文章中代码提升权限的方法,以便使上述代码可以顺利执行。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章