2009-02-10 11 views
10

Alles, was ich tun möchte, ist das aktuelle Datum und die Uhrzeit meiner Protokolldatei anhängen, sagen:Anfügen aktuelle Datum der Protokolldatei mit Log4Net

"export_(Wed_Feb_21_2009_at_1_36_41PM)" 

Hier ist meine aktuelle Konfiguration von meinem app.config

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="c:\export.txt" /> 
    <appendToFile value="true" /> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message %stackTrace%newline" /> 
    </layout> 
</appender> 

Ist das Hinzufügen des Datums zu meiner Protokolldatei möglich, oder ist es eines dieser Dinge, die ich in Code und nicht konfigurieren muss?

Antwort

8

Fügen Sie Folgendes in Ihrer Konfigurationsdatei

<appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net"> 
    <param name="File" value="c:\\ProjectX\\Log\\log.txt"/> 
    <param name="AppendToFile" value="true"/> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> 
    <param name="RollingStyle" value="Date"/> 
    <param name="DatePattern" value="yyyy.MM.dd"/> 
    <param name="StaticLogFileName" value="true"/> 
    <layout type="log4net.Layout.PatternLayout,log4net"> 
    <param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/> 
    </layout> 
</appender> 
+0

Gibt es etwas, das ich für den Dateiparam brauche?Das Datum wird immer noch nicht angehängt. Vielleicht könntest du die gesamte Konfiguration posten? – Chris

+0

Sicher, ich habe die obige Antwort bearbeitet und den ganzen Appenderabschnitt hinzugefügt. –

+0

Sorry ... immer noch nicht gehen. Verwenden Sie "log4net" oder "Common.Logging"? Ich verwende Common.Logging. Ich bekomme immer noch eine Datei namens "log.txt" – Chris

1

Verwendung StaticLogFileName:

<param name="StaticLogFileName" value="true"/> 
+1

Bitte geben Sie weitere Informationen an – Chris

+1

Mit StaticLogFileName true werden Ihre rollenden Dateien mit Datum/Uhrzeit gekennzeichnet anstatt sequenziell (.1, .2 usw.). Jetzt, wo ich es ansehe, müssen Sie den rollingStyle auf "Date" oder "Composite" setzen, damit dies funktioniert. Das RollingFileAppender-Dokument. ist ziemlich klar in diesen Einstellungen. –

+0

Überprüfen RollingFileAppender Abschnitt: http://logging.apache.org/log4net/release/config-examples.html –

10

Für diejenigen, die interessiert sind, hier ist die Lösung:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <param name="File" value="C:\\Users\\chris\\Documents\\log_.txt"/> 
    <param name="RollingStyle" value="Date"/> 
    <param name="DatePattern" value="_(yyyy.MM.dd-hh_mm_ss)"/> 
    <param name="StaticLogFileName" value="false"/> 
    <maximumFileSize value="100KB" /> 
    <appendToFile value="true" /> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />   
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message %stackTrace%newline" /> 
    </layout> 
</appender> 

und die Unit-Test was dies bestätigt:

[Test] 
public void TestLogger() 
{ 
    logger.Info("Start Log"); 

    for (int i = 0; i < 2500; i++) 
    { 
     logger.Info(i); 
    } 

    logger.Info("End Log Log"); 
} 

Es produziert die folgende Ausgabe:

log_.txt_(2009.02.19-01_16_34) 

Nicht wirklich das, was ich wollte, aber besser als das, was ich vorher hatte.

+3

Ich habe dieses DatePattern verwendet: und es hat eine Datei in folgendem Format erstellt: log_ (2011.05.05-11_28_47) .txt heißt auch File to "log" anstelle von log.txt. – rauland

+0

Hallo, ich habe versucht, mein Log4Net nach Datum verschiedene Dateien zu haben. Ich habe die Anweisungen nicht nur auf dieser Website, sondern auch auf mehreren Websites befolgt. Aber ich kann es nicht schaffen. Irgendeine Idee, die ich vermisse? – william

+0

@william würden Sie besser bedient werden, indem Sie eine separate Frage stellen und Ihren Code teilen, anstatt eine Frage in den Kommentaren zu stellen. –

12

Dateinamen erzeugen wie:

log_2013-12-19.txt 

make

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <param name="File" value="log_"/> 
    <param name="RollingStyle" value="Date"/> 
    <param name="DatePattern" value="yyyy-MM-dd.\tx\t" /> 
    <param name="StaticLogFileName" value="false"/> 
</appender> 

Bitte beachten Sie param "DatePattern" ändert, wo \ tx \ t macht die Namenerweiterung .txt-Datei.. Wenn Sie .txt anstelle von. \ Tx \ t angeben, wird der Dateiname mit der Erweiterung .PxP gespeichert, wenn die Uhrzeit PM oder .AxA im Falle von AM ist. also habe ich \ t benutzt, um Zeichen statt Muster zu schreiben. Zeit kann auch hinzugefügt werden und was immer Zeitmuster benötigt.

So kann das wirklich sein, was Philipp M wollte.

+0

Was, wenn Sie möchten, dass dies in einen Unterordner unterhalb von App_Data fällt? – JsonStatham

2

Wenn Sie ein .log Suffix verwenden möchten (eine Datei wie myLogPrefix.20160309.log zu erzeugen) verwenden:

<appender name="GeofenceFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
     <file type="log4net.Util.PatternString" value="C:\\Logs\\myLogPrefix" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <datePattern value=".yyyyMMdd.lo'g'" /> 
     <staticLogFileName value ="false" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level %logger – %message%newline" /> 
     </layout> 
</appender> 

Die gotchas die staticLogFileName = false sind, die Sie Rollups on the fly generiert werden können (statt von der Notwendigkeit, den Service \ Server) und die peinliche 'g' in der datepattern seit g ist ein magisches Zeichen in datePattern. Es gibt keine gute Dokumentation auf der log4net-Website, um dies zu studieren, also ist es wirklich eine Weisheit, die durch Versuch und Irrtum gewonnen wurde und die Erfahrungen anderer Leute überprüft hat.

Verwandte Themen