1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.pattern;
18
19 import java.util.concurrent.atomic.AtomicLong;
20
21 import org.apache.logging.log4j.core.LogEvent;
22 import org.apache.logging.log4j.core.config.plugins.Plugin;
23 import org.apache.logging.log4j.util.PerformanceSensitive;
24
25
26
27
28 @Plugin(name = "SequenceNumberPatternConverter", category = "Converter")
29 @ConverterKeys({ "sn", "sequenceNumber" })
30 @PerformanceSensitive("allocation")
31 public final class SequenceNumberPatternConverter extends LogEventPatternConverter {
32
33 private static final AtomicLong SEQUENCE = new AtomicLong();
34
35
36
37
38 private static final SequenceNumberPatternConverter INSTANCE =
39 new SequenceNumberPatternConverter();
40
41
42
43
44 private SequenceNumberPatternConverter() {
45 super("Sequence Number", "sn");
46 }
47
48
49
50
51
52
53
54 public static SequenceNumberPatternConverter newInstance(final String[] options) {
55 return INSTANCE;
56 }
57
58
59
60
61 @Override
62 public void format(final LogEvent event, final StringBuilder toAppendTo) {
63 toAppendTo.append(SEQUENCE.incrementAndGet());
64 }
65 }