1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.appender.rolling;
18
19 import org.apache.logging.log4j.core.Core;
20 import org.apache.logging.log4j.core.LogEvent;
21 import org.apache.logging.log4j.core.config.plugins.Plugin;
22 import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
23 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
24
25
26
27
28 @Plugin(name = "SizeBasedTriggeringPolicy", category = Core.CATEGORY_NAME, printObject = true)
29 public class SizeBasedTriggeringPolicy extends AbstractTriggeringPolicy {
30
31
32
33
34 private static final long MAX_FILE_SIZE = 10 * 1024 * 1024;
35
36 private final long maxFileSize;
37
38 private RollingFileManager manager;
39
40
41
42
43 protected SizeBasedTriggeringPolicy() {
44 this.maxFileSize = MAX_FILE_SIZE;
45 }
46
47
48
49
50
51
52 protected SizeBasedTriggeringPolicy(final long maxFileSize) {
53 this.maxFileSize = maxFileSize;
54 }
55
56 public long getMaxFileSize() {
57 return maxFileSize;
58 }
59
60
61
62
63
64 @Override
65 public void initialize(final RollingFileManager aManager) {
66 this.manager = aManager;
67 }
68
69
70
71
72
73
74
75 @Override
76 public boolean isTriggeringEvent(final LogEvent event) {
77 final boolean triggered = manager.getFileSize() > maxFileSize;
78 if (triggered) {
79 manager.getPatternProcessor().updateTime();
80 }
81 return triggered;
82 }
83
84 @Override
85 public String toString() {
86 return "SizeBasedTriggeringPolicy(size=" + maxFileSize + ')';
87 }
88
89
90
91
92
93
94 @PluginFactory
95 public static SizeBasedTriggeringPolicy createPolicy(@PluginAttribute("size") final String size) {
96
97 final long maxSize = size == null ? MAX_FILE_SIZE : FileSize.parse(size, MAX_FILE_SIZE);
98 return new SizeBasedTriggeringPolicy(maxSize);
99 }
100
101 }