SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Dateizugriffe Loggen

Geprüfte Antwort Dieser Beitrag hat 3 Antworten

Ohne Rang
19 Beiträge
P S erstellt 17 Aug. 2012 11:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

ich habe das Problem, dass ich bei einer Bibliothek mitloggen soll, wer wann welches Dokument aufgerufen hat. Ziel ist eine Liste oder Tabelle in der am Ende nur der User, die Zugriffszeit und das Dokument stehen.

Rein prinzipiell machen die Berichte über die Verwendung der Informationsverwaltungsrichtlinie ja genau so etwas, allerdings werden dabei für jede Websitesammlung Berichte erstellt, mich interessiert jedoch nur diese eine Bibliothek. Außerdem haben die Reports eine Menge an Daten, die ich nicht benötige.

Damit würde ich diese Reports erst einmal ausschließen. Meine Idee war jetzt, der Bibliothek einen Workflow zuzuordnen, der beim Aufruf eines Dokuments einfach eine Zeile mit Datum, User und Dokument an eine Textdatei, evtl. im CSV Format o.ä. anhängt. Allerdings weiß ich nicht, ob und wie so etwas mit einem Workflow realisierbar wäre.

Ich freue mich über sämtliche Ideen und Anregungen, gerne auch ganz andere Ideen.

Vielen Dank und Liebe Grüße,

P S

Alle Antworten

Ohne Rang
96 Beiträge
Stefan Walter Als Antwort am 18 Aug. 2012 11:54
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

dafür gibt es einige Lösungsmöglichkeiten, hängt unter anderem davon ab wie viele Daten da zusammen kommen werden. Ich habe selbst mal (eher zu Übungszwecken) eine Solution erstellt, die je nach List Settings Konfiguration die Zugriffsdaten auf die Dokumente in ein XML Speichert und dieses mittels Link zum Download anbietet. Geht halt nur wenn die Zugriffe überschaubar bleiben... wenns auf Performance ankommt würde ich ansonsten auf eine extra Liste ausweichen, die kann man dann eh auch leicht exportieren.

Allerdings würde ich persönlich mit EventReceivern arbeiten und nicht mit Workflows, scheint mir vom Gefühl her passender zu sein.
Halt uns doch auf dem Laufenden, find ich spannend!

Lg, Stefan

www.stefan-walter.net
SharePoint MCITP, MCPD, MCTS, MOS

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 20 Aug. 2012 08:56
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das Problem dabei ist, daß man es weder mit Workflows noch mit EventReceivern lösen kann. Beides wird beim reinen Öffnen (Anschauen) eines Dokuments nicht ausgelöst.

Es gibt im Grunde nur zwei Möglichkeiten: sämtliche Links auf ein Dokument mit entsprechendem JavaScript versehen, das jeden Klick irgendwo protokolliert. Funktioniert nicht wenn jemand einen anderen Link kennt oder die Adresse direkt im Browser eingibt. Die einzig zuverlässige Lösung ist das Auswerten der IIS-Protokolle. Nur dort wird wirklich jeder erfolgreiche Zugriff festgehalten.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
19 Beiträge
P S Als Antwort am 11 Feb. 2013 17:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

leider lag das Thema eine Zeit lang auf Eis, daher hatte ich hier keine Rückmeldung geben.

Andi F hat hier recht, umsetzbar ist das ganze nur mit den IIS Logs. Als Hilfsmittel kann hier der LogParser von Microsoft herangezogen werden:

http://technet.microsoft.com/de-de/scriptcenter/dd919274.aspx

In Verbindung mit einem geplanten Task kann man dann mit diesem Skript:

set log1p="Pfad unter dem die Logs liegen"

set result="Pfad zur Ergebnisdatei"

set logparser="%ProgramFiles(x86)%\Log Parser 2.2"

 

set /P datevar= < %result%\datetxt.txt

del %result%\datetxt.txt

set yr=%datevar:~-3,2%

set mn=%datevar:~-8,2%

set day=%datevar:~-11,2%

set datevar=%yr%%mn%%day%

 

cd %logparser%

 

LogParser "SELECT * INTO %result%\temp\temp.log FROM %log1p%\u_ex%datevar%.log WHERE cs-uri-stem LIKE '/""Zu überwachendes Verzeichnis/%%'" -i:W3C -o:W3C -fileMode 0

 

LogParser "SELECT TO_LOCALTIME(date), TO_LOCALTIME(time), cs-username, cs-uri-stem, cs-uri-query INTO %result%\result.csv FROM %result%\temp\temp.log ORDER BY TO_LOCALTIME(date), TO_LOCALTIME(time)" -i:W3C -o:TSV -oSeparator ";" -fileMode 0

 

del %result%\temp\temp.log

echo %date% > %base%\datetxt.txt

die Daten in eine CSV Datei schreiben lassen, die dann auch mit Excel 2010 weiter verarbeitet werden kann. Dieser Task läuft bei uns Nachts um 2, da dort einerseits keiner mehr arbeitet und dadurch Performance für diesen Task frei ist und zum anderen die Logs bis dahin fertig geschrieben sind.

Wichtig ist, die Datumsvariable entsprechend zu schreiben, da man immer das Datum des Vortages benötigt. Um hier keine Probleme mit Monatsgrenzen bzw sogar Schaltjahren zu bekommen ist eine temporäre Datei die einfachste Lösung. Sollen mehrere Orte oder mehrere Logdateien überwacht werden kann man einfach den ersten Logparser Aufruf doppelt ausführen lassen, entsprechend mit mehreren Logfiles oder Pfaden.

VG,

P S