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