为列表中的新文件自动启用SPAudit

时间:2010-08-17 06:50:06

标签: c# sharepoint sharepoint-2007 audit

我正在使用MOSS 2007中的审核框架,我已经以编程方式为网站集中的一堆网站中的2个特定列表启用了审核(这意味着这些网站都有自己的两个列表)。我只启用了更新掩码,因为我只想知道什么时候被更改或添加。

但是,我只能使用当前的设置记录添加的内容。为了允许查看列表项的更改,我知道列表项本身必须启用审核。但是,当向列表中添加新项目时,如何自动为项目启用审核?如果可能的话,我宁愿避免创建一个事件接收器来实现这一目标。

*修改

我用来启用审计的代码看起来像这样:

foreach (SPSite site in webApp.Sites) {
    foreach (SPWeb website in site.AllWebs) {
       website.Lists["MyList"].Audit.AuditFlags = SPAuditMaskType.Update;
       website.Lists["MyList"].Audit.Update();
    }
}

阅读它:

SPUserToken sysAdmin = website.Site.SystemAccount.UserToken;
using (SPSite elevatedSite = new SPSite(website.Site.ID,sysAdmin)) {
    using (SPWeb elevatedWeb = elevatedSite.OpenWeb(website.ID)) {
        SPAuditQuery auditQuery = new SPAuditQuery(elevatedSite);
        auditQuery.SetRangeStart(myDatetime);
        auditQuery.RestrictToList(elevatedWeb.Lists["MyList"]);
        listChanges = elevatedWeb.Lists["MyList"].Audit.GetEntries(auditQuery);
    }
}

我意识到我限制在这里列出,但是当我没有时,我也从网站上的其他列表中获得了更改。即使从逻辑上讲,我假设我只从列表中得到了更改,我称之为“GetEntries”......

由于

2 个答案:

答案 0 :(得分:1)

如果库已启用审核,则将审核新项目。我不知道任何特定于文档的审核

答案 1 :(得分:0)

回复这个问题有点晚了,但是如果其他人发现这个帖子,这里还有一些额外的信息。

可以在文档级别跟踪审核事件。这个link解释了如何做到这一点。他们使用事件处理程序使其工作。我知道你提到你不想这样做,但这是自动跟踪文档事件所需要的。在文档库上设置审计掩码类型似乎只跟踪DL事件,而不是单个项目。