1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.flume.appender;
18
19 import org.apache.flume.ChannelException;
20 import org.apache.flume.Event;
21 import org.apache.flume.EventDrivenSource;
22 import org.apache.flume.instrumentation.SourceCounter;
23 import org.apache.flume.source.AbstractSource;
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
26
27
28
29
30 public class Log4jEventSource extends AbstractSource implements EventDrivenSource {
31
32 private static final Logger LOGGER = LoggerFactory.getLogger(Log4jEventSource.class);
33
34 private final SourceCounter sourceCounter = new SourceCounter("log4j");
35
36 public Log4jEventSource() {
37 setName("Log4jEvent");
38 }
39
40 @Override
41 public synchronized void start() {
42 super.start();
43
44 LOGGER.info("Log4j Source started");
45 }
46
47 @Override
48 public synchronized void stop() {
49 super.stop();
50
51 LOGGER.info("Log4j Source stopped. Metrics {}", sourceCounter);
52 }
53
54
55 public void send(final Event event) {
56 sourceCounter.incrementAppendReceivedCount();
57 sourceCounter.incrementEventReceivedCount();
58 try {
59 getChannelProcessor().processEvent(event);
60 } catch (final ChannelException ex) {
61 LOGGER.warn("Unabled to process event {}" + event, ex);
62 throw ex;
63 }
64 sourceCounter.incrementAppendAcceptedCount();
65 sourceCounter.incrementEventAcceptedCount();
66 }
67 }