更改日志概述

上次修改时间: 2009年7月29日

适用范围: SharePoint Foundation 2010

本文内容
更改日志功能
更改日志保留
更改日志安全性
更改日志 API

更改日志既不是存储在文件系统上的某个位置的平面文件,实际上也不是一个日志。每个内容数据库都包含一个 EventCache 表,它是数据库中包含的对象的"更改日志"。该表中的每行都是日志的一个条目。该表中的列包含诸如更改日期和时间、所更改对象的类型、更改的性质以及对象的唯一标识符之类的信息。

更改日志不能通过用户界面提供。虽然可通过直接查询数据库来访问该日志,但不支持这种访问方法,并且这种方法在任何情况下都是不必要的。SharePoint Foundation 有丰富的对象模型,可提供对列表、网站、网站集和内容数据库级别的更改的访问权限。

更改日志功能

更改日志记录对以下类型对象进行的更改:

  • 项、文件和文件夹

  • 列表元数据

  • 网站元数据

  • 安全策略、用户和组

更改日志不记录对以下设置或对象的更改:

  • Web 应用程序配置

  • 全局管理设置

  • 二进制部署

  • Web 部件和安全控件

  • 网站、网站集、内容数据库或 Web 应用程序配置

更改日志包含有关以下类型更改的信息:

  • 添加

  • 更新

  • 删除

  • 重命名

  • 移出源列表

  • 移入目标列表

可以在以下逐步包含的范围内访问更改日志:

  • 列表

  • 网站

  • 网站集

  • 内容数据库

更改日志保留

默认情况下,更改日志中的条目 60 天后过期。计时器作业会定期删除过期条目。您可以在 Web 应用程序级别通过设置 ChangeLogRetentionPeriod 属性来修改保留期限。可以通过设置 ChangeLogExpirationEnabled 属性来完全禁用更改日志限制。

更改日志安全性

更改日志不是基于调用方的权限来进行安全调整的,而是通过只记录标识更改的对象和更改性质所必需的信息来避免在未经授权的情况下泄漏信息。调用方可以使用从更改日志获取的信息来访问已更改的对象,但访问需接受常规安全检查。如果调用方没有足够的权限,则会被拒绝访问该对象。

更改日志 API

可以通过调用 SPListSPWebSPSiteSPContentDatabase 对象的 GetChanges 方法来访问更改日志。此方法将返回在给定范围内发生更改的 SPChangeCollection 对象。然后,您可以枚举该集合并单独检查其每个成员。

通过 GetChanges 方法返回的 SPChangeCollection 中的每个对象是 SPChange 类的子类。父 SPChange 类的属性包含有关更改的基本信息,包括由 ChangeType 属性表示的更改类型;由 Time 属性表示的更改时间,以及由 SiteId 属性表示的发生更改的网站集的 ID。SPChange 的子类属性包含特定于更改对象类型的信息。例如,SPChangeItem 类表示对 SPListItem 对象的更改,因此具有 ListId 属性,该属性可标识更改的项所在的列表。同样,SPChangeList 类表示对某列表的更改,并且具有 WebId 属性,该属性可标识更改的列表所在的网站。