2016-02-07 44 views
7

Pracuję nad projektem, w którym zbieram mnóstwo rzeczy w pliku i chcę się upewnić, że mój plik dziennika zostanie zwinięty, gdy tylko zostanie osiągnięty ustalony limit dla pliku. Mam plik poniżej logback.xml, ale wygląda na to, że rozmiar pliku nie działa. Widzę, że mój plik ma rozmiar 793M, ale limit to 100MJak zachować plik dziennika zgodnie z rozmiarem pliku?

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

Co jest nie tak? A także jaka jest najlepsza polityka, którą powinniśmy przestrzegać w zakresie produkcji w zakresie pozyskiwania drewna? Logujemy kilka rzeczy w pliku i nie chcemy zapełniać dysku tym plikiem dziennika.

Odpowiedz

7

Zamiast FileAppender powinieneś używać RollingFileAppender. Zobacz: http://logback.qos.ch/manual/appenders.html

Podajesz ustawienia/właściwości, które mają być używane przez RollingFileAppender i są ignorowane przez FileAppender.

Na dobry przykład wykorzystania i konfiguracji znajdują się w tym linku: http://examples.javacodegeeks.com/enterprise-java/logback/logback-rollingfileappender-example/

logback.xml próbki przy pomocy RollingFileAppender i ConsoleAppender. RollingFileAppender jest oparty na rozmiarze i czasie:

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

Dzięki za twój przykład. Na koniec masz 'root level = DEBUG' co to ogólnie znaczy? Zamiast "DEBUG", jeśli zrobię to "INFO", to co się stanie? – john

+0

Ustawienie poziomu głównego dla debugowania oznacza, że ​​domyślnie chcesz, aby wszystkie wywołania log.debug() były wysyłane do pliku. Jeśli ustawisz go na INFO, w pliku nie zobaczysz instrukcji DEBUG log. W środowisku produkcyjnym często zwiększa się poziom rejestrowania do wartości WARN, aby zmniejszyć ilość rejestrowanych danych wyjściowych. Zwykle używam INFO w produkcji sam i stwierdzam, że jest to wystarczające. Możesz dodać określone elementy w swojej konfiguracji, aby "zastąpić" domyślną: pczeus

+0

Daj mi znać, jeśli to rozwiąże problem i zaakceptuj to jako odpowiedź, jeśli to zrobi . Powodzenia! – pczeus