1
2
3
4
5
6
7
8
9
10
11
12
13
14 package ch.qos.logback.core.rolling;
15
16 import ch.qos.logback.core.rolling.SizeAndTimeBasedFileNamingAndTriggeringPolicy.Usage;
17 import ch.qos.logback.core.util.FileSize;
18
19 public class SizeAndTimeBasedRollingPolicy<E> extends TimeBasedRollingPolicy<E> {
20
21 static long MAX_COMPRESSION_FACTOR = 20;
22
23 FileSize maxFileSize;
24
25 @Override
26 public void start() {
27 SizeAndTimeBasedFileNamingAndTriggeringPolicy<E> sizeAndTimeBasedFNATP = new SizeAndTimeBasedFileNamingAndTriggeringPolicy<E>(Usage.EMBEDDED);
28 if (maxFileSize == null) {
29 addError("maxFileSize property is mandatory.");
30 return;
31 } else {
32 addInfo("Archive files will be limited to [" + maxFileSize + "] each.");
33 }
34
35 sizeAndTimeBasedFNATP.setMaxFileSize(maxFileSize);
36 timeBasedFileNamingAndTriggeringPolicy = sizeAndTimeBasedFNATP;
37
38 if (!isUnboundedTotalSizeCap() && totalSizeCap.getSize() < maxFileSize.getSize()/MAX_COMPRESSION_FACTOR) {
39 addWarn("totalSizeCap of [" + totalSizeCap + "] is much smaller than maxFileSize [" + maxFileSize
40 + "] which is non-sensical, even taking compression into account.");
41 }
42
43
44 super.start();
45 }
46
47 public void setMaxFileSize(FileSize aMaxFileSize) {
48 this.maxFileSize = aMaxFileSize;
49 }
50
51 @Override
52 public String toString() {
53 return "c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@" + this.hashCode();
54 }
55 }