Log4Net Nicht-Protokollierung Wenn Sie Eingesetzt Werden
Version 1.2.11
. Anmeldung funktioniert auf meinem dev-Rechner, aber nicht das Verzeichnis zu erstellen, oder melden wenn Sie eingesetzt werden.
Habe ich versucht:
- geben voller Verzeichnis-Zugriff auf das IUSR-Konto, Jeder lokale Benutzer.
- läuft die app pool als lokalen admin-Konto.
- ein interner debugging wie Phil Haack beschreibt hier.
Beendet und neu gestartet (die app-pool nach jeder änderung.
Nichts produziert wird, in die Ausgabe-Datei.
Meine log4Net config ist unten. Irgendwelche Gedanken auf, was zu versuchen nächsten?
<?xml version="1.0"?>
<log4net debug="true">
<appender name="file" type="log4net.Appender.RollingFileAppender">
<file value="..\Logging\log.txt" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
<threshold value="DEBUG" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<appender name="console" type="log4net.Appender.DebugAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%X{auth}> - %m%n" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="file" />
<appender-ref ref="console" />
</root>
</log4net>
- Ist die Ausgabe-Verzeichnis oder-Datei erstellt?
- Nein, weder ist erstellt.
- Im code, sind Sie bei der Einrichtung Log4Net verwenden, XML-Konfiguration? Sollten mit den
XmlConfigurator
Klasse irgendwo. - Vernachlässigte ich hinzufügen, dass, aber seltsamerweise Anmeldung funktioniert immer noch auf meiner Entwicklungs-Maschine. Würde es Sinn machen, dass es funktioniert in dev ohne diese, aber es braucht, wenn Sie eingesetzt?
- Es könnte sein, versteckt in der
AssemblyInfo.cs
. Sind Sie vielleicht wechselnAssemblyInfo.cs
bei der Verpackung? Auch bin ich mir nicht sicher, ob Gebäude für debug-oder release-Effekt könnte es. - Hmm, Nein, es ist nicht referenziert überall. Vielleicht poste ich etwas in deren forum.
- post, die als eine Antwort, als war ich in der Tat nicht aufrufen. Weiß immer noch nicht, warum es funktioniert beim Debuggen!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn das Verzeichnis und die Datei nicht erstellt wird, dann am ehesten, ist die Konfiguration nicht gelesen werden (und somit verwendet) werden zur Laufzeit.
Ich immer vergessen, fügen Sie die Codezeile für Log4net, die Haken, bis Sie die Konfiguration. Dieser code erscheint in der Regel in der bootstrap-Klasse in der Anwendung (z.B. Global.asax für eine ASP.NET app).
Anstelle der oben genannten in-line, können Sie dieses Attribut, um die
AssemblyInfo.cs
Datei:So oder so, das wird Kabel bis log4net. Weitere Informationen finden Sie in der Manuelle Konfiguration Abschnitt des log4net-docs.
XmlConfigurator.Configure();
zum Globalen.asax.cs-Datei, es funktionierte!XmlConfigurator.ConfigureAndWatch(new FileInfo(....))
Tat es beginnt mit dem protokollieren, auf meinem deployment-Server.Klingt wie ein Problem mit Berechtigungen zu mir. Ich verwende fast immer ein Verzeichnis, wo ich nicht haben, dass eventuell spezielle Berechtigungen für die Anwendungen zu schreiben, die log-Dateien.
Hier ist, was ich generell mit log4net:
Natürlich müssen Sie zu ersetzen, Name der Firma, Name des Programms und Log-Datei-Namen in die oben genannten mit den tatsächlichen Werten.
Diesem schreiben wird auf das "ProgramData" - Ordner, wo der Zugang ist in der Regel nicht eingeschränkt. Sie können navigieren Sie zu diesem Ordner im Datei-Explorer durch Eingabe von %ProgramData% or %AllUsersProfile%
Andere Sache ich mag über diese Methode ist, dass es funktioniert auf fast jedem microsoft O/S. XP, Vista, 7, 8
Werden Sie wahrscheinlich nicht wissen, wo Sie sich anmelden:
Wird abgeleitet von Ihrem Laufenden Verzeichnis, das iis-Verzeichnis. Sie können besser einen vollständigen Pfad wie:
Dann können Sie die richtigen Zugriffsrechte für das logging-Verzeichnis. Log4net wird nicht erstellt alle Verzeichnisse, soweit ich weiß. So erstellen Sie das c:\logging Verzeichnis zuerst.
Wenn Sie IIS verwenden, stellen Sie sicher, dass die richtige Gruppe hat, ändern Sie den Zugriff auf den Logs-Ordner (in der Regel IIS_USERS).
Nicht von den Antworten, die für mich gearbeitet, bis ich diese Zeilen auf das web.config app-Einstellungen: