2009-04-09 19 views
9

Bir Log4Net RollingFileAppender var overwritting: documentation baktığımızdaLog4Net RollingFileAppender kompozit haddeleme tarzı ile olarak yapılandırılmış veri

<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> 

, bu irade mantıklı varsayılan haddeleme tarzı Kompozit, böylece Sadece tarihte değil, belirli bir boyuta (10 MB varsayılan) ulaştığında döndürün.

Sorun, boyutu vurduğunda, günlükleri yeniden başlatıyor ve verileri ilk günün yarısından kaybediyorum (öğlen saatlerinde bu boyuta ulaşıyor).
Neden bu sadece yeni bir dosyaya dönmüyor ve gelecekteki tüm günlük satırları MyLog.log'a yerleştiriliyor? Veya günlüğün yuvarlanması, ama daha sonra gece yarısı, tekrar haddeleme ve tarihli günlüğü (örneğin, 10MB ulaştığında MyLog.log2009-04-08 için yuvarlanan ve daha sonra bu aynı dosyayı gece yarısı üzerine yazarak) üzerine yazıyor?

Ben

<rollingStyle value="Date" /> 

bu ben sadece tarihi sınırında rulo sağlamak için yapmanız gereken tek şey mi ayarlayacaktır? Bunu Log4Net.config dosyasında anında değiştirebilir miyim, yoksa uygulamayı yeniden başlatmalı mıyım? IIS6 üzerinde çalışıyor.

+0

Sadece anladığımdan emin olun: tarihte * ve * boyutunu açmak ister misiniz? ya da sadece tarih? –

+0

Sadece tarihte yuvarlanmasını istiyorum. Varsayılan olarak, haddeleme kompozit olarak ayarlanmışsa da, hangisi önce gelirse tarih veya boyutta yuvarlanır. –

cevap

10

Ayarlarım. Sadece tarihte rulolar:

web.config için
<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> 

Değişiklikleri, (böylece vb oturumları kaybedersiniz) otomatik olarak uygulamayı yeniden başlayacaktır.

8

Sorunumuzun yarısını çözmek için RollingFileAppendermaxSizeRollBackups parametresini eklemeye çalışın. Bu şekilde, günlük dosyası döndüğünde, eski günlüğünüzün üzerine yazmaz, ancak başka bir dosyaya döndürür.

<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> 
İlgili konular