0

私は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」と呼んだリストから変更を取得しただけだと思いますが...

ありがとう

4

2 に答える 2

1

ライブラリで監査が有効になっている場合は、新しいアイテムが監査されます。ドキュメント固有の監査については知りません

于 2010-08-17T12:05:25.760 に答える
0

これへの返信は少し遅れていますが、他の人がこの投稿を見つけた場合に備えて、いくつかの追加情報があります。

ドキュメントレベルで監査イベントを追跡することが可能です。このリンクはそれがどのように行われるかを説明しています。彼らはそれを機能させるためにイベントハンドラーを使用します。このようにしたくないとおっしゃっていますが、これはドキュメントイベントを自動的に追跡するために必要なことです。ドキュメントライブラリに監査マスクタイプを設定すると、DLイベントのみが追跡され、個々のアイテムは追跡されないように見えます。

于 2011-01-11T19:57:01.933 に答える