Frage

Ich habe einen Log4Net RollingFileAppender, die als konfiguriert ist:

<configuration>

  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>

  <log4net>

    <root>
      <level value="ALL" />
    </root>

    <logger name="RollingFileAppender" additivity="false">
      <level value="DEBUG"/>
      <appender-ref ref="RollingFileAppender" />
    </logger>

    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender" >
      <param name="File" value="C:\\MyLog.log" />
      <param name="AppendToFile" value="true" />
      <param name="DatePattern" value="yyyy-MM-dd"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%m%n"/>
      </layout>
    </appender>

  </log4net>

</configuration>

Mit Blick auf die Dokumentation , der Standardroll Stil ist Composite-, so macht es Sinn, diese rollen werden, wenn es eine bestimmte Größe (den Standard von 10 MB) erreicht, nicht nur auf dem neuesten Stand.

Das Problem ist, wenn es um die Größe trifft, ist es das Protokoll neu gestartet wird, und ich bin die Daten aus der ersten Hälfte des Tages zu verlieren (es reicht diese Größe um die Mittagszeit).
Warum sollte das nicht rollen nur in eine neue Datei und alle zukünftigen Protokollzeilen werden in die MyLog.log setzen? Oder ist es das Protokoll rollt, aber dann um Mitternacht, es rollt wieder und overwritting das datierte Protokoll (z. B. Walzen zu MyLog.log2009-04-08, sobald es 10 MB erreicht, und dann overwritting diese gleiche Datei um Mitternacht)

ich stelle die

<rollingStyle value="Date" />

Ist das alles, was ich tun muss, um es nur, um sicherzustellen, auf dem Datum der Grenze rollt? Kann ich diese on the fly in der log4net.config ändern, oder muss ich die Anwendung neu starten? Es läuft auf IIS6.

War es hilfreich?

Lösung

Hier sind meine Einstellungen. Er rollt nur auf Datum:

<log4net>
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
        <file value="c:\Logs\Today.log"/>
        <rollingStyle value="Date"/>
        <datePattern value="yyyyMMdd"/>
        <appendToFile value="true"/>
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%level %logger %date{ISO8601} - %message%newline"/>
        </layout>
    </appender>
    <root>
        <!-- Options are "ALL", "DEBUG", "INFO", "WARN", "ERROR", "FATAL" and "OFF". -->
        <level value="ERROR"/>
        <appender-ref ref="RollingFile"/>
    </root>
</log4net>

Änderungen an Ihrem web.config, wird die Anwendung automatisch neu gestartet (so werden Sie verlieren Sitzungen, etc.).

Andere Tipps

Versuchen Sie, den maxSizeRollBackups Parameter in Ihrer RollingFileAppender Hinzufügen Hälfte unseres Problems zu lösen. Auf diese Weise, wenn die Protokolldatei rollt, wird es Ihr altes Protokoll nicht überschrieben, sondern es wird auf eine andere Datei rollen.

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender" >
  <param name="File" value="C:\\MyLog.log" />
  <param name="AppendToFile" value="true" />
  <param name="DatePattern" value="yyyy-MM-dd"/>
  <param name="maxSizeRollBackups" value="10" />
  <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%m%n"/>
  </layout>
</appender>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top