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.Core;
24 import org.apache.logging.log4j.core.Layout;
25 import org.apache.logging.log4j.core.LogEvent;
26 import org.apache.logging.log4j.core.config.Property;
27 import org.apache.logging.log4j.core.config.plugins.Plugin;
28 import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
29 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
30
31
32
33
34 @Plugin(name = "CountingNoOp", category = Core.CATEGORY_NAME, elementType = Appender.ELEMENT_TYPE, printObject = true)
35 public class CountingNoOpAppender extends AbstractAppender {
36
37 private final AtomicLong total = new AtomicLong();
38
39 public CountingNoOpAppender(final String name, final Layout<?> layout) {
40 super(name, null, layout, true, Property.EMPTY_ARRAY);
41 }
42
43 private CountingNoOpAppender(final String name, final Layout<?> layout, final Property[] properties) {
44 super(name, null, layout, true, properties);
45 }
46
47 public long getCount() {
48 return total.get();
49 }
50
51 @Override
52 public void append(final LogEvent event) {
53 total.incrementAndGet();
54 }
55
56
57
58
59 @PluginFactory
60 public static CountingNoOpAppender createAppender(@PluginAttribute("name") final String name) {
61 return new CountingNoOpAppender(Objects.requireNonNull(name), null, Property.EMPTY_ARRAY);
62 }
63 }