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
BigIntegeris 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_VALUEis reached, counter overflows toLong.MIN_VALUE.{ "$resolver": "counter" }Resolves a sequence of numbers starting from 1000. OnceLong.MAX_VALUEis 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 classCounterResolver.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.StringgetName()private static java.math.BigIntegerreadStart(TemplateResolverConfig config)voidresolve(LogEvent ignored, JsonWriter jsonWriter)Resolves the givenvalueusing the providedJsonWriter.private static voidtrimStringBuilder(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:TemplateResolverResolves the givenvalueusing the providedJsonWriter.- Specified by:
resolvein interfaceTemplateResolver<LogEvent>
-
-