it-swarm.com.de

Log4net rollt den täglichen Dateinamen mit dem Datum im Dateinamen

Ich hätte gerne Dateien mit folgenden Namen:

tT.MM.JJJJ.Log

Wie ist das mit log4net möglich?

113
JL.

Verwenden Sie in Ihrer Log4net-Konfigurationsdatei den folgenden Parameter für den RollingFileAppender:

<param name="DatePattern" value="dd.MM.yyyy'.log'" />
97
Mun
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
  <file value="logs\" />
  <datePattern value="dd.MM.yyyy'.log'" />
  <staticLogFileName value="false" />
  <appendToFile value="true" />
  <rollingStyle value="Composite" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="5MB" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
  </layout>
</appender>
191
Nonkichi

Für einen RollingLogFileAppender benötigen Sie außerdem folgende Elemente und Werte:

<rollingStyle value="Date" />
<staticLogFileName value="false" />
29
BobD

Mit Log4Net 1.2.13 verwenden wir die folgenden Konfigurationseinstellungen, um Datum und Uhrzeit im Dateinamen zuzulassen.

<file type="log4net.Util.PatternString" value="E:/logname-%utcdate{yyyy-MM-dd}.txt" />

Welche Dateien in der folgenden Konvention zur Verfügung stellen: logname-2015-04-17.txt

Daher ist es normalerweise am besten, die folgenden Informationen zu haben, um sicherzustellen, dass Sie 1 Protokoll pro Tag führen.

<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />

Wenn die Dateigröße von Belang ist, können bis zu einem neuen Tag 500 Dateien mit einer Größe von 5 MB erstellt werden. CountDirection ermöglicht die auf- oder absteigende Nummerierung von Dateien, die nicht mehr aktuell sind.

 <maxSizeRollBackups value="500" />
 <maximumFileSize value="5MB" />
 <rollingStyle value="Composite" />
 <datePattern value="yyyyMMdd" />
 <CountDirection value="1"/>
 <staticLogFileName value="true" />
19
Jack Thorley

Ich habe am Ende folgendes verwendet (beachte den '.log'-Dateinamen und die einfachen Anführungszeichen um' myfilename_ '):

  <rollingStyle value="Date" />
  <datePattern value="'myfilename_'yyyy-MM-dd"/>
  <preserveLogFileNameExtension value="true" />
  <staticLogFileName value="false" />
  <file type="log4net.Util.PatternString" value="c:\\Logs\\.log" />

Das gibt mir:

myfilename_2015-09-22.log
myfilename_2015-09-23.log
.
.
15
Njal

Ich habe alle Antworten ausprobiert, aber es fehlte immer etwas und es funktionierte nicht wie erwartet für mich.

Dann habe ich ein bisschen mit den in jeder Antwort gegebenen Hinweisen experimentiert und war mit der folgenden Einstellung erfolgreich:

<appender name="RollingActivityLog" type="log4net.Appender.RollingFileAppender">
  <file type="log4net.Util.PatternString" value="C:\temp\LOG4NET_Sample_Activity.log" />
  <appendToFile value="true" />
  <rollingStyle value="Date" />
  <staticLogFileName value="false" />
  <preserveLogFileNameExtension value="true" />
  <datePattern value="-yyyyMMdd" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date %-5level - %message%newline" />
  </layout>
</appender>

Das Problem mit anderen Parameterkombinationen war, dass die neueste Datei nicht das Zeitmuster hatte oder dass das Zeitmuster als .log20171215 was jeden Tag eine neue Dateizeit (und einen neuen Dateityp!) erzeugte - oder beide Probleme erschienen.

Mit dieser Einstellung erhalten Sie nun Dateien wie diese:

LOG4NET_Sample_Activity-20171215.log

das ist was ich wollte.


m zusammenzufassen:

  • Setzen Sie das Datumsmuster nicht in das <file value=... Attribut, definieren Sie es einfach in datePattern.

  • Stellen Sie sicher, dass das Attribut preserveLogFileNameExtensionvalue auf true gesetzt ist.

  • Stellen Sie sicher, dass Sie staticLogFileNamevalue auf false gesetzt haben.

  • Setzen Sie das rollingStyle Attribut Wert auf Date.

8
Matt

So behalten Sie die Dateierweiterung bei:

<log4net>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="D:\\LogFolder\\%date{yyyyMM}\\SchT.log" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <maximumFileSize value="30MB" />
      <staticLogFileName value="true" />
      <preserveLogFileNameExtension value="true"/>
      <datePattern value="ddMMyyyy" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
  </log4net>
5
Fourat

Der erweiterte Konfigurationsabschnitt in einer vorherigen Antwort mit

 ...
 ...
 <rollingStyle value="Composite" />
 ...
 ...

aufgelistete Werke musste ich aber nicht nutzen

<staticLogFileName value="false" /> 

. Ich denke, der RollingAppender muss diese Einstellung (logisch) ignorieren, da die Datei per Definition jeden Tag neu erstellt wird, wenn die Anwendung neu gestartet/wiederverwendet wird. Möglicherweise spielt es für den sofortigen Rollover JEDES Mal, wenn die Anwendung gestartet wird, eine Rolle.

0
AllenM