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 FileSize maxFileSize;
22
23 @Override
24 public void start() {
25 SizeAndTimeBasedFileNamingAndTriggeringPolicy<E> sizeAndTimeBasedFNATP = new SizeAndTimeBasedFileNamingAndTriggeringPolicy<E>(Usage.EMBEDDED);
26 if (maxFileSize == null) {
27 addError("maxFileSize property is mandatory.");
28 return;
29 } else {
30 addInfo("Archive files will be limited to [" + maxFileSize + "] each.");
31 }
32
33 sizeAndTimeBasedFNATP.setMaxFileSize(maxFileSize);
34 timeBasedFileNamingAndTriggeringPolicy = sizeAndTimeBasedFNATP;
35
36 if (!isUnboundedTotalSizeCap() && totalSizeCap.getSize() < maxFileSize.getSize()) {
37 addError("totalSizeCap of [" + totalSizeCap + "] is smaller than maxFileSize [" + maxFileSize
38 + "] which is non-sensical");
39 return;
40 }
41
42
43 super.start();
44 }
45
46 public void setMaxFileSize(FileSize aMaxFileSize) {
47 this.maxFileSize = aMaxFileSize;
48 }
49
50 @Override
51 public String toString() {
52 return "c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@" + this.hashCode();
53 }
54 }