Ich benutze log4net 1.2.11. Die Protokollierung funktioniert also in der Entwicklungsmaschine, aber wenn ich sie auf einem Testserver veröffentliche, funktioniert sie nicht. Beim Debuggen aus der Ferne habe ich gesehen, dass das Protokoll korrekt in der ILog-Variablen geladen wird, aber wenn es log.Error () aufruft, passiert nichts, keine Protokolldatei, keine log4net-Ausnahme.
Irgendwelche Ideas?
Obs: Ich benutze das log4net in einer asp.net mvc 3 Website.
- BEARBEITEN
Ich setze Vollzugriff auf JEDEN ... nichts ändern, keine Log-Datei.
Aktivieren Sie das log4net-Debugging, um weitere Informationen zu dem Problem zu erhalten. Ohne dies schlägt log4net automatisch fehl und es ist sehr schwierig, Konfigurationsprobleme zu beheben.
Überprüfen Sie Wie aktiviere ich das log4net-interne Debugging? in log4net-FAQs
Berücksichtigen Sie bei Berechtigungsproblemen (wie Shyju angegeben wurde), dass die Standardidentität für IIS 7.5% ist. co_de% und nicht ApplicationPoolIdentity
Hier haben Sie Anweisungen zum Sichern von Ressourcen für ApplicationPoolIdentity . Überprüfen Sie den Abschnitt "Ressourcen sichern"
Überprüfen Sie, ob der Ordner über ausreichende Berechtigungen für ASP.NET verfügt, um eine Datei in diesen Ordner zu schreiben. Wahrscheinlich ist das der Grund, wenn es in der Dev-Maschine funktioniert
Einige Problemumgehungen
Löschen Sie die Protokolldatei und den Ordner in Ihrer Entwicklungsumgebung und führen Sie sie als neue aus, um festzustellen, ob sie eine Protokolldatei erstellt. Wenn ja, gibt es im Code nichts zu ändern. Es sollte eine Erlaubnissache sein. Also Lets überprüfen Sie die Berechtigungen
Wie Claudio Redi in seiner Antwort erwähnt, können Sie auch das interne Debugging von log4net aktivieren, um weitere Informationen zu erhalten. Überprüfen Sie den Abschnitt namens " Wie aktiviere ich log4net internes Debugging? " für weitere Details in diesem Link Ссылка
Aus ihrer Dokumentation
Warum kann ich mich nicht über eine Webanwendung bei einem FileAppender anmelden?
Die Webanwendung wird als spezielles Benutzerkonto auf dem Webserver ausgeführt namens ASPNET. Dieses Konto verfügt über eingeschränkte Berechtigungen zum Schutz des Webserver vor Angriffen. Standardmäßig ist dieses Konto möglicherweise nicht vorhanden Berechtigung zum Schreiben in das Dateisystem. Stellen Sie sicher, dass das ASPNET account hat die Berechtigung zum Erstellen und Schreiben von Dateien im Verzeichnis ausgewählt für die Protokollierung.
In meinem Fall war der Verweis auf log4.config
in web.config
falsch:
zeigt auf den Stammordner, und auf meinem Dev-Rechner war log4.config
tatsächlich vorhanden, also würde die Protokollierung funktionieren.
Bei einem Build wird jedoch log4.config
in den Ordner bin
kopiert, der einzige Ort nach einer Bereitstellung.
Ändern der web.config
zu
machte Logging-Arbeit überall für mich
Tags und Links asp.net-mvc .net log4net