how to create new archived log file per hour

93 Views Asked by At

I want to write a logback file in java that create a file for whole the microservice and after one hour logs should be transferred in new archived file

NOTE : -every one hour logs should be saved in new archived file -no archived file should be deleted

I have tried with totalSizeCap and without totalSizeCap this code but not creating

<property name="LOG_FILE" value="logs/campaign-service.log"/>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>
            %d{yyyy-MM-dd HH:mm:ss} %-5level %logger{0} - %msg%n
        </Pattern>
    </layout>
</appender>

<appender name="FILE-ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_FILE}</file>

    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>logs/archived/campaign-service.%d{yyyy-MM-dd HH:mm}.log</fileNamePattern>
        <maxHistory>24</maxHistory>
        <totalSizeCap>1GB</totalSizeCap>
    </rollingPolicy>

    <encoder>
        <pattern>%d [%t] %p %c{0} %m%n</pattern>
    </encoder>
</appender>

<logger name="com.credence" level="trace" additivity="false">
    <appender-ref ref="FILE-ROLLING"/>
</logger>

<logger name="org.springframework" level="info" additivity="false">
    <appender-ref ref="STDOUT" />
</logger>

<root level="info">
    <appender-ref ref="STDOUT" />
</root>

<logger name="com.credence" level="trace" additivity="false">
    <appender-ref ref="STDOUT"/>
</logger>
1

There are 1 best solutions below

5
On

You have to add the following line in between <rollingPolicy> </rollingPolicy> :

<CronTriggeringPolicy schedule="0 0 0/1 1/1 * ? *" evaluateOnStartup="true"/> 
 

Edit 1 :

Also you can refer my code to generate log file every hour :

<configuration>
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>/path/to/logs/microservice.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>/path/to/logs/archive/microservice-%d{yyyy-MM-dd_HH}.log</fileNamePattern>
      
      <maxHistory>1</maxHistory>
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>10MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>

    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

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