2017-10-11 3 views
3

Ich verwende %property%, um den Ausgabedateipfad in der Log4Net-Konfigurationsdatei festzulegen. Eine Protokolldatei wird jedes Mal beim Start der Anwendung im APP-Datenordner erstellt. Ich benutze die Composite rolling style zum Rollen der Dateien.Wie Sie den Protokolldateipfad programmgesteuert in log4net ändern?

Aber jetzt ist meine Anforderung zu rollen/ändern Sie den Dateipfad basierend auf einigen Benutzerinteraktionen in der Anwendung. Wie kann ich das erreichen, kann mir jemand vorschlagen, dies zu erreichen?

  1. Wie die Datei in C# -Code zu rollen. Das erwartete Verhalten ähnelt dem Rollen basierend auf Größe und Datum.
  2. Was ist der C# -Code, um den ausgehenden Dateipfad in Log4Net zwischen der Programmausführung zu ändern.

Bitte lassen Sie mich wissen, wenn meine Anforderung nicht klar ist.

Danke.

Antwort

1

Sie haben zwei Fragen:

  1. ich nicht bewusst bin, ob dies möglich ist. Ich nehme an, die Rolle zum nächsten Namen ist privat in der rollenden Datei Appender. Sie können in der Quelle nachsehen, ob Sie darauf zugreifen können. Wenn nicht, können Sie vom RollingFileAppender erben und Ihre eigene Implementierung hinzufügen. Sie können den Appen zur Laufzeit durch bekommen:

Code:

LogManager.GetRepository().GetAppenders(); 
  1. eine Eigenschaft Mit dem richtigen Weg ist. Ihre Konfiguration sollte wie folgt aussehen:

config:

<appender name="YourAppender" type="log4net.Appender.RollingFileAppender"> 
    <file type="log4net.Util.PatternString" value="~/App_Data/%property{LogName}" /> 
</appender> 

Wichtig ist die type="log4net.Util.PatternString". Legen Sie die Eigenschaft fest, bevor Sie log4net initialisieren.

log4net.GlobalContext.Properties["LogName"] = name; 
+0

Vielen Dank für Ihre Antwort, Könnten Sie bitte teilen Sie mir die Quelle Ort, um Ihren Vorschlag zu überprüfen. Es ist hilfreich festzustellen, ob die Methode privat oder öffentlich ist. – Venkat

Verwandte Themen