2008-08-09 23 views
7

Ich habe eine ASP.NET-Anwendung, für die wir unser eigenes Protokollierungsmodul geschrieben haben.Wo sollte ich meine Protokolldatei für eine asp.net-Anwendung ablegen?

Meine Frage ist, wo ist der Standard Ort, um eine Protokolldatei zu schreiben? I.e. Die Website wird als anonyme Benutzeridentität (z. B. IUSR auf IIS7) ausgeführt, und ich benötige einen Ort, an dem ich weiß, dass sie die Berechtigung zum Schreiben haben wird.

Cheers,

Antwort

6

App_Data Ordner im Stammverzeichnis des Projekts. Es wird nicht für Webanfragen bereitgestellt. damit andere Leute nicht danach suchen können.

1

Ich würde vorschlagen, legen Sie die Protokolldatei auf eine separate Festplatte, obwohl Sie einen kleinen Leistungsgewinn geben sollten, so dass Sie nicht versuchen, sowohl auf der gleichen Festplatte als die Website zu lesen und zu schreiben. Wenn Sie die Protokolldatei nicht auf einer separaten Festplatte speichern können, würde ich einfach einen Ordner Ihrer Wahl auswählen.

In jedem Fall müssen Sie dem "Network Service" -Konto "Ändern" Berechtigungen für den gewünschten Ordner geben.

Wenn Sie andererseits Zugriff auf eine Datenbank haben, loggen Sie die Informationen dort ein. Es wird viel schneller als der Zugriff auf die Festplatte und wird nicht öffentlich verfügbar sein. Sie können auch sehr leicht von den Daten berichten.

0

Ich bin nicht in der Lage, die Berechtigungen für Ordner (insbesondere außerhalb des virtuellen Verzeichnis Stammordner) zu ändern, und nicht bereits einen App_Data-Ordner, also bin ich ein bisschen zögerlich, damit zu gehen.

Also für den Moment gehe ich mit dem Ordner CommonApplicationData.

  • auf Vista/Server 2008 ist dies C: \ Programdata \
  • auf XP/Server 2003 ist dies C: \ Dokumente und Einstellungen \ All Users \ Anwendungsdaten \
0

I Ich bin nicht in der Lage, die Berechtigungen für Ordner zu ändern (besonders außerhalb des Home-Ordners des virtuellen Verzeichnisses), und habe noch keinen App_Data-Ordner, also bin ich etwas zögerlich, um damit zu gehen.

Wenn Sie eine Website haben, haben Sie eindeutig einen Ordner irgendwo. Können Sie einen (nicht webbasierten) Unterordner nicht hinzufügen? Es scheint, als wäre das ein geeigneterer Ort, um Ihre Protokolle zu speichern, als sie in einen globalen, freigegebenen Ordner zu legen.

0

Sie können auch im Windows-Ereignisprotokoll oder in einer Tabelle in einer Datenbank anmelden. Wie oft sehen sich Personen das Ereignisprotokoll an? Wenn es regelmäßig überprüft wird, erleichtert das Schreiben in eine Tabelle die Rückmeldung viel einfacher, da es einfach ist, die Reihenfolge umzukehren und nur die letzten X-Ereignisse für den aktuellen Zeitraum anzuzeigen. Das Windows-Ereignisprotokoll Sie können auch das Windows-Ereignisprotokoll über PowerShell oder mit LogParser abfragen.

+0

oder mit Log Parser Lizard, es ist eine großartige Ergänzung für LogParser, unterstützt sql-ähnliche Syntax für fast alles einschließlich Dateisystem. – jhexp

0

Drücken Sie die app_data ist die beste Idee, nur bedenken Sie, wenn die Veröffentlichung der Projekte, wenn die Option "Alle vorhandenen Dateien vor der Veröffentlichung löschen" angekreuzt ist, dann die aktuellen Daten in den Ordner werden. Die Problemumgehung besteht darin, das Löschen des app_data-Ordners zu überspringen.

Eine weitere Möglichkeit zum Protokollieren ist die Verwendung eines vorhandenen Frameworks wie Log4net.