Class CounterResolver
- java.lang.Object
-
- org.apache.logging.log4j.layout.template.json.resolver.CounterResolver
-
- All Implemented Interfaces:
EventResolver
,TemplateResolver<LogEvent>
public class CounterResolver extends java.lang.Object implements EventResolver
Resolves a number from an internal counter.Configuration
config = [ start ] , [ overflowing ] , [ stringified ] start = "start" -> number overflowing = "overflowing" -> boolean stringified = "stringified" -> boolean
Unless provided, start and overflowing are respectively set to zero and true by default.When overflowing is set to true, the internal counter is created using a long, which is subject to overflow while incrementing, though garbage-free. Otherwise, a
BigInteger
is used, which does not overflow, but incurs allocation costs.When stringified is enabled, which is set to false by default, the resolved number will be converted to a string.
Examples
Resolves a sequence of numbers starting from 0. OnceLong.MAX_VALUE
is reached, counter overflows toLong.MIN_VALUE
.{ "$resolver": "counter" }
Resolves a sequence of numbers starting from 1000. OnceLong.MAX_VALUE
is reached, counter overflows toLong.MIN_VALUE
.{ "$resolver": "counter", "start": 1000 }
Resolves a sequence of numbers starting from 0 and keeps on doing as long as JVM heap allows.{ "$resolver": "counter", "overflowing": false }
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
CounterResolver.AtomicBigInteger
-
Field Summary
Fields Modifier and Type Field Description private java.util.function.Consumer<JsonWriter>
delegate
-
Constructor Summary
Constructors Constructor Description CounterResolver(EventResolverContext context, TemplateResolverConfig config)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static java.util.function.Consumer<JsonWriter>
createBigIntegerResolver(java.math.BigInteger start)
private static java.util.function.Consumer<JsonWriter>
createDelegate(EventResolverContext context, TemplateResolverConfig config)
private static java.util.function.Consumer<JsonWriter>
createLongResolver(java.math.BigInteger start)
private static Recycler<java.lang.StringBuilder>
createStringBuilderRecycler(EventResolverContext context)
private static java.util.function.Consumer<JsonWriter>
createStringifiedBigIntegerResolver(java.math.BigInteger start, Recycler<java.lang.StringBuilder> stringBuilderRecycler)
private static java.util.function.Consumer<JsonWriter>
createStringifiedLongResolver(java.math.BigInteger start, Recycler<java.lang.StringBuilder> stringBuilderRecycler)
(package private) static java.lang.String
getName()
private static java.math.BigInteger
readStart(TemplateResolverConfig config)
void
resolve(LogEvent ignored, JsonWriter jsonWriter)
Resolves the givenvalue
using the providedJsonWriter
.private static void
trimStringBuilder(java.lang.StringBuilder stringBuilder, int maxLength)
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.logging.log4j.layout.template.json.resolver.TemplateResolver
isFlattening, isResolvable, isResolvable, resolve
-
-
-
-
Field Detail
-
delegate
private final java.util.function.Consumer<JsonWriter> delegate
-
-
Constructor Detail
-
CounterResolver
public CounterResolver(EventResolverContext context, TemplateResolverConfig config)
-
-
Method Detail
-
createDelegate
private static java.util.function.Consumer<JsonWriter> createDelegate(EventResolverContext context, TemplateResolverConfig config)
-
readStart
private static java.math.BigInteger readStart(TemplateResolverConfig config)
-
createLongResolver
private static java.util.function.Consumer<JsonWriter> createLongResolver(java.math.BigInteger start)
-
createBigIntegerResolver
private static java.util.function.Consumer<JsonWriter> createBigIntegerResolver(java.math.BigInteger start)
-
createStringBuilderRecycler
private static Recycler<java.lang.StringBuilder> createStringBuilderRecycler(EventResolverContext context)
-
trimStringBuilder
private static void trimStringBuilder(java.lang.StringBuilder stringBuilder, int maxLength)
-
createStringifiedLongResolver
private static java.util.function.Consumer<JsonWriter> createStringifiedLongResolver(java.math.BigInteger start, Recycler<java.lang.StringBuilder> stringBuilderRecycler)
-
createStringifiedBigIntegerResolver
private static java.util.function.Consumer<JsonWriter> createStringifiedBigIntegerResolver(java.math.BigInteger start, Recycler<java.lang.StringBuilder> stringBuilderRecycler)
-
getName
static java.lang.String getName()
-
resolve
public void resolve(LogEvent ignored, JsonWriter jsonWriter)
Description copied from interface:TemplateResolver
Resolves the givenvalue
using the providedJsonWriter
.- Specified by:
resolve
in interfaceTemplateResolver<LogEvent>
-
-