2015-12-09 5 views
1

Кажется, я не могу получить скользящий файл журнала.Как создать файл скользящего журнала

Мой logback.xml конфигурации имеет следующее:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <encoder> 
     <pattern>%date %level %thread %X{jobid} %logger{20}.%method\(%line\) %msg%n</pattern> 
    </encoder> 
</appender> 

<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender"> 
    <discriminator> 
     <key>logFileName</key> 
     <defaultValue>unknown</defaultValue> 
    </discriminator> 
    <sift> 
     <appender name="FILE-${logFileName}" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
      <file>${catalina.base}/logs/${logFileName}.log</file> 
      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
       <fileNamePattern>${catalina.base}/logs/${logFileName}_%d{yyyy-MM-dd_HH-mm}.%i.log</fileNamePattern> 
       <maxHistory>30</maxHistory> 
      </rollingPolicy> 
      <encoder> 
       <pattern>%date %level %thread %X{jobid} %logger{20}.%method\(%line\) %msg%n</pattern> 
      </encoder> 
     </appender> 
    </sift> 
</appender> 


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

После Tomcat запускает и загружает приложение, я могу увидеть файл журнала «unknown.log». Это потому, что я еще не установил logFileName в коде.

Тем не менее, я не вижу скользящие файлы. Даже после ожидания несколько минут.

В соответствии с logback documentation шаблон «% d {yyyy-MM-dd_HH-mm}» должен создавать политику времени прокрутки каждой минуты.

Я не вижу новый файл журнала, созданный.

Update:

Я добавил Appender STDOUT. Теперь я вижу в каталоге.

Интересно. Записи в файле unknown.log с SIFT останавливаются с остановкой минуты. После этого ничего не записывается в файл SIFT, но я продолжаю получать записи в catalina.out:

2015-12-09 16:31:22,269 INFO Thread1 RlQti5b0QYybZvRuHi/m c.l.l.w.Worker.consumeMessage(51) Rcvd: job.complete. 
2015-12-09 16:31:49,654 INFO Thread1 mY0E7sV7QZyTRZAw9UwV c.l.l.w.Worker.consumeMessage(51) Rcvd: job.complete. 
2015-12-09 16:31:51,812 INFO Thread1 WWjuyzH+RmCa35JcxRJy c.l.l.w.Worker.consumeMessage(51) Rcvd: job.complete. 
2015-12-09 16:31:58,977 INFO Thread1 jUdqB1DaQ8KxajDFk6jN c.l.l.w.Worker.consumeMessage(51) Rcvd: job.complete. 

ответ

0

Удаление% i из файлаNamePattern, похоже, устраняет проблему. Я полагаю, что индекс (% i) разрешен только для FixedWindowRollingPolicy.

0

только предположение, но - вероятно, потому что вы ничего не войти. Они «ленивы».

+0

редактировал вопрос. Приложение SIFT останавливается в верхней части минуты, хотя catalina.out (то есть STDOUT appender) продолжает получать записи. – km1

0

попробовать это

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <statusListener class="ch.qos.logback.core.status.NopStatusListener" /> 
    <property name="USER_HOME" value="\logs" /> 

    <appender name="FILE-THREAD" class="ch.qos.logback.classic.sift.SiftingAppender"> 

     <!-- This is MDC value --> 
     <!-- We will assign a value to 'logFileName' via Java code --> 
     <discriminator> 
      <key>logFileName</key> 
      <defaultValue>head0</defaultValue> 
     </discriminator> 

     <sift> 

      <!-- A standard RollingFileAppender, the log file is based on 'logFileName' 
       at runtime --> 
      <appender name="FILE-${logFileName}" 
       class="ch.qos.logback.core.rolling.RollingFileAppender"> 
       <file>${USER_HOME}/${logFileName}.log</file> 

       <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
        <Pattern> 
         %d{yyyy-MM-dd HH:mm:ss} %mdc [%thread] %level %logger{35} 
         - %msg%n 
        </Pattern> 
       </encoder> 

       <rollingPolicy 
        class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
        <FileNamePattern>${USER_HOME}/${logFileName}.%i.log.zip 
        </FileNamePattern> 
        <MinIndex>1</MinIndex> 
        <MaxIndex>10</MaxIndex> 
       </rollingPolicy> 

       <triggeringPolicy 
        class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 
        <MaxFileSize>10MB</MaxFileSize> 
       </triggeringPolicy> 

      </appender> 

     </sift> 
    </appender> 
Смежные вопросы