1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.log4j.rewrite;
18
19 import org.apache.log4j.Logger;
20 import org.apache.log4j.spi.LoggingEvent;
21
22 import java.util.Collections;
23 import java.util.HashMap;
24 import java.util.Map;
25 import java.util.StringTokenizer;
26
27
28
29
30
31
32
33
34
35
36 public class PropertyRewritePolicy implements RewritePolicy {
37 private Map properties = Collections.EMPTY_MAP;
38
39 public PropertyRewritePolicy() {
40 }
41
42
43
44
45
46
47
48
49 public void setProperties(String props) {
50 Map<String, String> hashTable = new HashMap<>();
51 StringTokenizer pairs = new StringTokenizer(props, ",");
52 while (pairs.hasMoreTokens()) {
53 StringTokenizer entry = new StringTokenizer(pairs.nextToken(), "=");
54 hashTable.put(entry.nextElement().toString().trim(), entry.nextElement().toString().trim());
55 }
56 synchronized (this) {
57 properties = hashTable;
58 }
59 }
60
61
62
63
64 public LoggingEvent rewrite(final LoggingEvent source) {
65 if (!properties.isEmpty()) {
66 Map rewriteProps = new HashMap(source.getProperties());
67 for (Object o : properties.entrySet()) {
68 Map.Entry entry = (Map.Entry) o;
69 if (!rewriteProps.containsKey(entry.getKey())) {
70 rewriteProps.put(entry.getKey(), entry.getValue());
71 }
72 }
73
74 return new LoggingEvent(
75 source.getFQNOfLoggerClass(),
76 source.getLogger() != null ? source.getLogger() : Logger.getLogger(source.getLoggerName()),
77 source.getTimeStamp(),
78 source.getLevel(),
79 source.getMessage(),
80 source.getThreadName(),
81 source.getThrowableInformation(),
82 source.getNDC(),
83 source.getLocationInformation(),
84 rewriteProps);
85 }
86 return source;
87 }
88
89
90 }