私はMOSS2007の監査フレームワークを使用しており、サイトコレクション内の多数のサイトで2つの特定のリストの監査をプログラムで有効にしました(つまり、サイトにはすべて独自の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」と呼んだリストから変更を取得しただけだと思いますが...
ありがとう