2009-03-05 6 views
62

Ich möchte meine Logfile so etwas wie folgt aussehen: 2009-02-13.logLog4Net: Rollen-Datei appender definieren Erweiterung

aber das Problem ist, dass ich keinen Weg zu finden, scheinen die hinzufügen .log-Erweiterung

Ich habe viele Dinge ausprobiert, aber nichts hilft. Das ist, was ich habe so weit:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="Logs/Log4Net/.log"/> 
    <appendToFile value="true"/> 
    <rollingStyle value="Date"/> 
    <datePattern value="yyyy-MM-dd" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/> 
    </layout> 
</appender> 

Antwort

53

Versuchen Sie Ihr Datum Muster wie so die Erweiterung .log zugab und aus dem Dateiattribut entfernen.

<datePattern value="yyyy-MM-dd.lo\g"/> 
... 
<staticLogFileName value="false" /> 
+7

Auch nicht vergessen hinzufügen

8

add ".lo \ g" bis zum Ende Ihrer datepattern

105

Die anderen Antworten Flucht der "g" in "log" da "g" ist ein Sonderzeichen in datePattern. Das ist nicht falsch, aber ich ziehe den gesamten Satz von nicht-Datum Zeichen in einfachen Anführungszeichen wickeln, etwa so:

<datePattern value="yyyy-MM-dd'.log'" /> 

Diese die gleichen Ergebnisse geben, aber es ist einfacher für mich zu verwalten. Auf diese Weise muss ich mich nicht erinnern, welche speziellen Zeichen speziell für datePattern sind (die Liste ist lang und abwechslungsreich). Wenn ich einen Charakter vergesse, laufe ich nicht Gefahr, meine Dateinamen zu knacken; Sie sind alle schön en masse entkommen.

+3

Ich bevorzuge diesen Ansatz auch. –

+1

Also was ist der Wert, den Sie für damit haben? – ssmith

+2

@ssmith: Lassen Sie die '.log' von' 'weg. Log4Net hängt das Datumsmuster an den Dateiwert an, so dass Sie die Dateierweiterung auf dem ersten haben möchten. –

4

Dies ist meine Protokolldatei xml config. Der Pfad zur Protokolldatei befindet sich im Tag "file"

Dadurch wird eine Protokolldatei "2012-11-22.log" im Ordner "LogFiles" im Routenordner meiner Website erstellt.

HINWEIS: Stellen Sie sicher, dass der Ordner zuerst existiert!

<?xml version="1.0"?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,  log4net"/> 
    </configSections> 
    <log4net> 
    <root> 
     <level value="INFO"/> 
     <appender-ref ref="RollingFileAppender"/> 
    </root> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="LogFiles/"/> 
     <appendToFile value="true"/> 
     <rollingStyle value="Date"/> 
     <maxSizeRollBackups value="5"/> 
     <maximumFileSize value="10MB"/> 
     <datePattern value="yyyy-MM-dd'.log'" /> 
     <staticLogFileName value="false"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %level %logger - %message%newline%exception"/> 
     </layout> 
    </appender> 
    </log4net> 
</configuration> 
15

log4net jetzt bietet auch eine PreserveLogFileNameExtension Eigenschaft, die Ihre Erweiterung .log bis zum Ende der Verbindung Dateinamen (inklusive Datum Muster und/oder Größe Sequenznummer) zwingen kann:

<file value="LogFiles/.log"/> 
<preserveLogFileNameExtension value="true" /> 
<datePattern value="yyyy-MM-dd" /> 
+0

Muss nur in neueren Versionen vorhanden sein? Ich konnte diesen Parameter nicht für mein System verwenden. Ich beendete die Verwendung .log zweimal, einmal in Dateiwert und ein anderes Mal in datePattern :( – Sun

+1

Ich glaube, es wurde in 1.2.12 hinzugefügt –

Verwandte Themen