1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.logging.log4j.core.config.plugins.visitors;
19
20 import org.apache.logging.log4j.core.LogEvent;
21 import org.apache.logging.log4j.core.config.Configuration;
22 import org.apache.logging.log4j.core.config.Node;
23 import org.apache.logging.log4j.core.config.plugins.PluginValue;
24 import org.apache.logging.log4j.util.StringBuilders;
25 import org.apache.logging.log4j.util.Strings;
26
27
28
29
30 public class PluginValueVisitor extends AbstractPluginVisitor<PluginValue> {
31 public PluginValueVisitor() {
32 super(PluginValue.class);
33 }
34
35 @Override
36 public Object visit(final Configuration configuration, final Node node, final LogEvent event,
37 final StringBuilder log) {
38 final String name = this.annotation.value();
39 final String elementValue = node.getValue();
40 final String attributeValue = node.getAttributes().get("value");
41 String rawValue = null;
42 if (Strings.isNotEmpty(elementValue)) {
43 if (Strings.isNotEmpty(attributeValue)) {
44 LOGGER.error("Configuration contains {} with both attribute value ({}) AND element" +
45 " value ({}). Please specify only one value. Using the element value.",
46 node.getName(), attributeValue, elementValue);
47 }
48 rawValue = elementValue;
49 } else {
50 rawValue = removeAttributeValue(node.getAttributes(), "value");
51 }
52 final String value = this.substitutor.replace(event, rawValue);
53 StringBuilders.appendKeyDqValue(log, name, value);
54 return value;
55 }
56 }