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