12

I'm trying to figure out if there is a way limit the size of log files within the logback.xml configuration file.

I've reviewed the SDL documentation, which points me to the official documentation (here), which suggests adding the following:

<appender>
...
<maxFileSize>5MB</maxFileSize>
...
</appender>

But after restarting the services, I can see my file has grown more than I've configured. Does anyone have an example of their logback.xml showing a working / restricted files?

  • I think your link is broken and should go to logback.qos.ch (without the www) – Jonathan Williams Mar 6 '13 at 8:09
  • @JonathanWilliams - if the http is removed the link is removed - issue in SO – johnwinter Mar 6 '13 at 15:59
  • I think it needs the 'http' but not the 'www'. Glad it's now working! – Jonathan Williams Mar 6 '13 at 16:28
  • Can we even keep log files rolling in logs folder as an addition to limiting each log file's mail? – Guest19876 Dec 5 '13 at 5:02
  • Fixed link... it needed the www removing, not the http. Jonathon - you do know you can just edit a question to fix stuff like that? – Dominic Cronin Jan 13 '17 at 18:31
12

[UPDATED]

The following XML is also given on the logback site. This uses the RollingFileAppender and suggests that the 'maxFileSize' element needs to be inside a 'triggeringPolicy':

<configuration>
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>test.log</file>

    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>tests.%i.log.zip</fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>3</maxIndex>
    </rollingPolicy>

    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>5MB</maxFileSize>
    </triggeringPolicy>
    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender>

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

The following information is also given on the site too:

Specified number is not in proper int form, or not expected format.

When you specify the MaxFileSize to be used by the SizeBasedTriggeringPolicy, logback expects a rather precise format:

The number has to be an integer You can add 'KB', 'MB' or 'GB' after the number. Here are some correct values: 500KB, 15MB, 2GB.

  • thanks jonathan - couldn't see the wood from the trees. least this solution is out there now :) – johnwinter Mar 6 '13 at 15:58
8

This works for me:

<appender name="rollingCoreLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>${log.folder}/cd_core.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
    <maxHistory>${log.history}</maxHistory>
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
      <maxFileSize>1MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>
  </rollingPolicy>
  <encoder>
    <pattern>${log.pattern}</pattern>
  </encoder>
  <prudent>true</prudent>
</appender>

I think inserting the node timeBasedFileNamingAndTriggeringPolicy inside the rollingPolicy and using the %i as the index of the numbered files.

If you only want to use a Size triggering, then the previous solution of Jonathan works only if the rolling Policy is "FixedWindowRollingPolicy", not the TimeBasedRollingPolicy used by the logbacks of Tridion examples.

  • i was missing <prudent>true</prudent> and it worked. – aamir Feb 4 '16 at 19:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.