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 java.util.Arrays;
20
21 import org.apache.logging.log4j.core.LogEvent;
22 import org.apache.logging.log4j.core.config.plugins.Plugin;
23 import org.apache.logging.log4j.core.config.plugins.PluginElement;
24 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
25
26
27
28
29 @Plugin(name = "Policies", category = "Core", printObject = true)
30 public final class CompositeTriggeringPolicy implements TriggeringPolicy {
31
32 private final TriggeringPolicy[] triggeringPolicy;
33
34 private CompositeTriggeringPolicy(final TriggeringPolicy... policies) {
35 this.triggeringPolicy = policies;
36 }
37
38 public TriggeringPolicy[] getTriggeringPolicies() {
39 return triggeringPolicy;
40 }
41
42
43
44
45
46 @Override
47 public void initialize(final RollingFileManager manager) {
48 for (final TriggeringPolicy policy : triggeringPolicy) {
49 policy.initialize(manager);
50 }
51 }
52
53
54
55
56
57
58 @Override
59 public boolean isTriggeringEvent(final LogEvent event) {
60 for (final TriggeringPolicy policy : triggeringPolicy) {
61 if (policy.isTriggeringEvent(event)) {
62 return true;
63 }
64 }
65 return false;
66 }
67
68
69
70
71
72
73 @PluginFactory
74 public static CompositeTriggeringPolicy createPolicy(
75 @PluginElement("Policies") final TriggeringPolicy... policies) {
76 return new CompositeTriggeringPolicy(policies);
77 }
78
79 @Override
80 public String toString() {
81 return "CompositeTriggeringPolicy(policies=" + Arrays.toString(triggeringPolicy) + ")";
82 }
83
84 }