2016-02-07 19 views
7

Bir dosyada bir sürü şey kaydettiğim bir proje üzerinde çalışıyorum ve dosya için sabit bir sınır ulaşıldığında kayıt defterimin yuvarlandığından emin olmak istiyorum. Aşağıda logback.xml dosya var ama dosya boyutu çalışmıyor gibi görünüyor. Dosya boyutumu 793M olarak görüyorum ancak sınırım 100 MYığın günlük dosyasını dosya boyutuna göre nasıl tutulur?

<configuration> 
    <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
     <file>process.log</file> 
     <triggeringPolicy 
      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 
      <maxFileSize>100MB</maxFileSize> 
     </triggeringPolicy> 
     <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
      <fileNamePattern>process%i.log</fileNamePattern> 
      <minIndex>1</minIndex> 
      <maxIndex>9</maxIndex> 
     </rollingPolicy> 
     <encoder> 
      <pattern>%date %level [%thread] %msg%n</pattern> 
      <!-- this improves logging throughput --> 
      <immediateFlush>true</immediateFlush> 
     </encoder> 
    </appender> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder 
      by default --> 
     <encoder> 
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 
      </pattern> 
     </encoder> 
    </appender> 

    <root level="INFO"> 
     <appender-ref ref="FILE" /> 
     <appender-ref ref="STDOUT" /> 
    </root> 
</configuration> 

Burada ne yapıyorum? Ayrıca üretimde takip etmemiz gereken en iyi politika nedir? Bir dosyada bir sürü şey kaydediyoruz ve diski bu günlük dosyasıyla doldurmak istemiyoruz. FileAppender yerine, bir RollingFileAppender kullanıyor olmalısınız.

cevap

7

Bak: http://logback.qos.ch/manual/appenders.html

RollingFileAppender tarafından kullanılması amaçlanan ve FileAppender tarafından yok sayılan ayarları/özellikleri belirtiyorsunuz. iyi bir örnek kullanımı ve yapılandırma için

, bu bağlantıyı bakın: Bir RollingFileAppender ve ConsoleAppender kullanılarak http://examples.javacodegeeks.com/enterprise-java/logback/logback-rollingfileappender-example/

Numune logback.xml. RollingFileAppender hem boyut hem de zaman açısından temeldir:

<?xml version="1.0" encoding="UTF-8"?> 
    <configuration scan="true"> 
     <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> 
      <encoder> 
       <charset>UTF-8</charset> 
       <Pattern>%d %-4relative [%thread] %-5level %logger{35} - %msg%n</Pattern> 
      </encoder> 
     </appender> 

     <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
      <file>/srv/logs/application.log</file> 

      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
       <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern> 
       <maxHistory>30</maxHistory> 
      </rollingPolicy> 

      <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 
       <maxFileSize>5MB</maxFileSize> 
      </triggeringPolicy> 

      <encoder> 
       <charset>UTF-8</charset> 
       <pattern>%d %-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> 
      </encoder> 
     </appender> 

     <root level="DEBUG"> 
      <appender-ref ref="consoleAppender" /> 
      <appender-ref ref="FILE"/> 
     </root> 
    </configuration> 
+0

Örneğiniz için teşekkürler. Sonunda “root level = DEBUG” var, bu genel olarak ne anlama geliyor? 'DEBUG' yerine 'INFO' yaparsam ne olur? – john

+0

Kök düzeyini ayıklanacak şekilde ayarlamak, varsayılan olarak, tüm log.debug() çağrılarının dosyaya gönderilmesini istediğiniz anlamına gelir. Bunu INFO olarak ayarlarsanız, dosyanızda DEBUG günlük ifadelerini görmezsiniz. Bir üretim ortamında, çıkış günlüğü miktarını azaltmak için günlük seviyesini WARN'e yükseltmek yaygındır. INFO’yu genellikle kendim Yapım’da kullanıyorum ve bunun yeterli olduğunu düşünüyorum. Varsayılan "geçersiz kılmak" için yapılandırmanıza özel öğelerini ekleyebilirsiniz: pczeus

+0

Sorununuzu çözüp çözmediyse bunu yanıt olarak kabul edersiniz. . İyi şanslar! – pczeus

İlgili konular