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 java.util.Collections;
20 import java.util.HashMap;
21 import java.util.Iterator;
22 import java.util.Map;
23 import java.util.StringTokenizer;
24
25 import org.apache.log4j.Logger;
26 import org.apache.log4j.spi.LoggingEvent;
27
28
29
30
31
32
33
34
35
36
37 public class PropertyRewritePolicy implements RewritePolicy {
38 private Map properties = Collections.EMPTY_MAP;
39 public PropertyRewritePolicy() {
40 }
41
42
43
44
45
46
47
48
49 public void setProperties(String props) {
50 Map 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(Iterator iter = properties.entrySet().iterator();
68 iter.hasNext();
69 ) {
70 Map.Entry entry = (Map.Entry) iter.next();
71 if (!rewriteProps.containsKey(entry.getKey())) {
72 rewriteProps.put(entry.getKey(), entry.getValue());
73 }
74 }
75
76 return new LoggingEvent(
77 source.getFQNOfLoggerClass(),
78 source.getLogger() != null ? source.getLogger(): Logger.getLogger(source.getLoggerName()),
79 source.getTimeStamp(),
80 source.getLevel(),
81 source.getMessage(),
82 source.getThreadName(),
83 source.getThrowableInformation(),
84 source.getNDC(),
85 source.getLocationInformation(),
86 rewriteProps);
87 }
88 return source;
89 }
90
91
92
93 }