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.plugins.Plugin;
24 import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
25 import org.apache.logging.log4j.core.config.plugins.PluginElement;
26 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
27 import org.apache.logging.log4j.core.helpers.Booleans;
28 import org.apache.logging.log4j.core.helpers.KeyValuePair;
29 import org.apache.logging.log4j.message.StructuredDataId;
30
31
32
33
34 @Plugin(name = "LoggerFields", category = "Core", 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, String sdId, String enterpriseId,
43 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(@PluginElement("LoggerFields") final KeyValuePair[] keyValuePairs,
74 @PluginAttribute("sdId") final String sdId, @PluginAttribute("enterpriseId") String enterpriseId,
75 @PluginAttribute("discardIfAllFieldsAreEmpty") String discardIfAllFieldsAreEmpty) {
76 final Map<String, String> map = new HashMap<String, String>();
77
78 for (final KeyValuePair keyValuePair : keyValuePairs) {
79 map.put(keyValuePair.getKey(), keyValuePair.getValue());
80 }
81
82 final boolean discardIfEmpty = Booleans.parseBoolean(discardIfAllFieldsAreEmpty, false);
83 return new LoggerFields(map, sdId, enterpriseId, discardIfEmpty);
84 }
85
86 public StructuredDataId getSdId() {
87 if (enterpriseId == null || sdId == null) {
88 return null;
89 }
90 final int eId = Integer.parseInt(enterpriseId);
91 return new StructuredDataId(sdId, eId, null, null);
92 }
93
94 public boolean getDiscardIfAllFieldsAreEmpty() {
95 return discardIfAllFieldsAreEmpty;
96 }
97 }