1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.log4j.bridge;
18
19 import java.io.Serializable;
20 import java.util.ArrayList;
21 import java.util.List;
22
23 import org.apache.log4j.Appender;
24 import org.apache.logging.log4j.core.Filter;
25 import org.apache.logging.log4j.core.Layout;
26 import org.apache.logging.log4j.core.LogEvent;
27 import org.apache.logging.log4j.core.appender.AbstractAppender;
28 import org.apache.logging.log4j.core.config.Property;
29 import org.apache.logging.log4j.core.filter.CompositeFilter;
30
31
32
33
34 public class AppenderAdapter {
35
36 private final Appender appender;
37 private final Adapter adapter;
38
39
40
41
42
43 public AppenderAdapter(Appender appender) {
44 this.appender = appender;
45 org.apache.logging.log4j.core.Filter appenderFilter = null;
46 if (appender.getFilter() != null) {
47 if (appender.getFilter().getNext() != null) {
48 org.apache.log4j.spi.Filter filter = appender.getFilter();
49 List<org.apache.logging.log4j.core.Filter> filters = new ArrayList<>();
50 while (filter != null) {
51 filters.add(new FilterAdapter(filter));
52 filter = filter.getNext();
53 }
54 appenderFilter = CompositeFilter.createFilters(filters.toArray(Filter.EMPTY_ARRAY));
55 } else {
56 appenderFilter = new FilterAdapter(appender.getFilter());
57 }
58 }
59 this.adapter = new Adapter(appender.getName(), appenderFilter, null, true, null);
60 }
61
62 public Adapter getAdapter() {
63 return adapter;
64 }
65
66 public class Adapter extends AbstractAppender {
67
68 protected Adapter(final String name, final Filter filter, final Layout<? extends Serializable> layout,
69 final boolean ignoreExceptions, final Property[] properties) {
70 super(name, filter, layout, ignoreExceptions, properties);
71 }
72
73 @Override
74 public void append(LogEvent event) {
75 appender.doAppend(new LogEventAdapter(event));
76 }
77
78 @Override
79 public void stop() {
80 appender.close();
81 }
82
83 public Appender getAppender() {
84 return appender;
85 }
86 }
87 }