2012-12-18 27 views
8

'un log4j 1.2.16 numarasını kullanıyorum; bu, günlük dosyalarını belirli bir boyuta ulaştığında döndürür. Şimdi, günlük dosyalarının belirli bir boyuta ulaştıklarında günlük ve yuvarlanmasını istiyorum. Böylece günde bir veya daha fazla günlük dosyası olacaktır. Örneğin Hem boyut hem de zamana göre günlükleri kaydetme

,
myapp.log 
myapp-17.12.2013.log 
myapp-16.12.2012.log 
myapp-16.12.2012.1.log 
myapp-16.12.2012.2.log 

bir off-the-raf appender zaten öyle ki, var mı?

+0

http://stackoverflow.com/questions/3823977/need-a-working-example -of-configuring-log4j-rollingfileappender-yoluyla-özellikleri – Stefan

cevap

8

aslında iki seçenek vardır seçenekler dosya adlarını kullanır. Bu dosyaları otomatik olarak hareket ettiren başka bir script varsa, bunu dikkatlice düşünün. İki dosya aynı dosya ile uğraşırken dosya yeniden adlandırmak risklidir.

Benim önerim doğrudan desende immutable günlük dosyası adına yazmaktır: myapp- {dd.MM.yyyy}. {X} .log. Bu şekilde "yuvarlama" sadece bir dosyayı kapatıp yenisini açar. İsimsiz. Arka plan iş parçacığı yok. Yapılandırma xml Aşağıda

+0

Bu workrd. Çok teşekkürler. –

3

Hızlı yanıt "hayır". Log4j adlı javadoc'a bakın: https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/FileAppender.html

Kutudan yalnızca iki dosya ekleyicisi vardır: DailyRollingFileAppender ve RollingFileAppender (ve ilk önce senkronizasyon sorunları olduğu için önerilmez).

Ne istediğinizi elde etmek için, kendi ekleyicinizi oluşturmalı, RollingFileAppender'ı genişletmeli ve günü değiştirirse dosyayı döndürmek için değiştirmelisiniz. modifikasyon yönteminde olacaktır: http://www.docjar.com/html/api/org/apache/log4j/RollingFileAppender.java.html (hat 274): Burada kaynağını görebilirsiniz

protected void subAppend(LoggingEvent event) 

.

Sadece kodu kopyalayıp yapıştırmanız ve aradığınız rollOver'ı gereksinimlerinize göre değiştirmeniz gerekiyor. http://logback.qos.ch/manual/appenders.html#SizeAndTimeBasedFNATP

  • buradan Log4J için TimeAndSizeRollingAppender vardır: http://www.simonsite.org.uk/
  • akılda hem bulundurun Büyüklüğü ve zaman tetikleme politikasıyla

    1. kullanım LogBack:

    2

    iş yapacak: JAR gerekli: log4j yuvarlanma appender-20150607-2059

    <?xml version="1.0" encoding="UTF-8" ?> 
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
    <log4j:configuration debug="true" 
        xmlns:log4j='http://jakarta.apache.org/log4j/'> 
        <appender name="file" 
         class="uk.org.simonsite.log4j.appender.TimeAndSizeRollingAppender"> 
         <param name="File" value="D:\\App.log" /> 
         <param name="Threshold" value="DEBUG" /> 
         <param name="DatePattern" value=".yyyy-MM-dd" /> 
         <param name="MaxFileSize" value="1KB" /> 
         <param name="MaxRollFileCount" value="100" /> 
         <param name="ScavengeInterval" value="30000" /> 
         <param name="BufferedIO" value="false" /> 
         <param name="CompressionAlgorithm" value="GZ" /> 
         <layout class="org.apache.log4j.PatternLayout"> 
          <param name="ConversionPattern" value="%-5p %-23d{ISO8601} [%t] %x: %c{1} - %m%n" /> 
         </layout> 
        </appender> 
    
        <root> 
         <level value="DEBUG" /> 
         <appender-ref ref="file" /> 
        </root> 
    
    </log4j:configuration> 
    
    İlgili konular