1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.layout;
18
19 import java.util.Collections;
20 import java.util.HashMap;
21 import java.util.Map;
22
23 import org.apache.logging.log4j.core.config.Node;
24 import org.apache.logging.log4j.core.config.plugins.Plugin;
25 import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
26 import org.apache.logging.log4j.core.config.plugins.PluginElement;
27 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
28 import org.apache.logging.log4j.core.util.KeyValuePair;
29 import org.apache.logging.log4j.message.StructuredDataId;
30
31
32
33
34 @Plugin(name = "LoggerFields", category = Node.CATEGORY, printObject = true)
35 public final class LoggerFields {
36
37 private final Map<String, String> map;
38 private final String sdId;
39 private final String enterpriseId;
40 private final boolean discardIfAllFieldsAreEmpty;
41
42 private LoggerFields(final Map<String, String> map, final String sdId, final String enterpriseId,
43 final boolean discardIfAllFieldsAreEmpty) {
44 this.sdId = sdId;
45 this.enterpriseId = enterpriseId;
46 this.map = Collections.unmodifiableMap(map);
47 this.discardIfAllFieldsAreEmpty = discardIfAllFieldsAreEmpty;
48 }
49
50 public Map<String, String> getMap() {
51 return this.map;
52 }
53
54 @Override
55 public String toString() {
56 return this.map.toString();
57 }
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 @PluginFactory
73 public static LoggerFields createLoggerFields(
74 @PluginElement("LoggerFields") final KeyValuePair[] keyValuePairs,
75 @PluginAttribute("sdId") final String sdId,
76 @PluginAttribute("enterpriseId") final String enterpriseId,
77 @PluginAttribute(value = "discardIfAllFieldsAreEmpty", defaultBoolean = false) final boolean discardIfAllFieldsAreEmpty) {
78 final Map<String, String> map = new HashMap<>();
79
80 for (final KeyValuePair keyValuePair : keyValuePairs) {
81 map.put(keyValuePair.getKey(), keyValuePair.getValue());
82 }
83
84 return new LoggerFields(map, sdId, enterpriseId, discardIfAllFieldsAreEmpty);
85 }
86
87 public StructuredDataId getSdId() {
88 if (enterpriseId == null || sdId == null) {
89 return null;
90 }
91 final int eId = Integer.parseInt(enterpriseId);
92 return new StructuredDataId(sdId, eId, null, null);
93 }
94
95 public boolean getDiscardIfAllFieldsAreEmpty() {
96 return discardIfAllFieldsAreEmpty;
97 }
98 }