1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.appender;
18
19 import java.util.Objects;
20 import java.util.concurrent.atomic.AtomicLong;
21
22 import org.apache.logging.log4j.core.Appender;
23 import org.apache.logging.log4j.core.Layout;
24 import org.apache.logging.log4j.core.LogEvent;
25 import org.apache.logging.log4j.core.config.plugins.Plugin;
26 import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
27 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
28
29
30
31
32 @Plugin(name = "CountingNoOp", category = "Core", elementType = Appender.ELEMENT_TYPE, printObject = true)
33 public class CountingNoOpAppender extends AbstractAppender {
34
35 private final AtomicLong total = new AtomicLong();
36
37 public CountingNoOpAppender(final String name, final Layout<?> layout) {
38 super(name, null, layout);
39 }
40
41 public long getCount() {
42 return total.get();
43 }
44
45 @Override
46 public void append(final LogEvent event) {
47 total.incrementAndGet();
48 }
49
50
51
52
53 @PluginFactory
54 public static CountingNoOpAppender createAppender(@PluginAttribute("name") final String name) {
55 return new CountingNoOpAppender(Objects.requireNonNull(name), null);
56 }
57 }