Class ContextDataFactory
- java.lang.Object
-
- org.apache.logging.log4j.core.impl.ContextDataFactory
-
public class ContextDataFactory extends java.lang.ObjectFactory for creating the StringMap instances used to initialize LogEvents' context data. When context data is injected into the log event, these StringMap instances may be either populated with key-value pairs from the context, or completely replaced altogether.By default returns
SortedArrayStringMapobjects. Can be configured by setting system property"log4j2.ContextData"to the fully qualified class name of a class implementing theStringMapinterface. The class must have a public default constructor, and if possible should also have a public constructor that takes a singleintargument for the initial capacity.- Since:
- 2.7
- See Also:
LogEvent.getContextData(),ContextDataInjector,SortedArrayStringMap
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.Class<? extends StringMap>CACHED_CLASSprivate static java.lang.StringCLASS_NAMEprivate static java.lang.reflect.Constructor<?>DEFAULT_CONSTRUCTORIn LOG4J2-2649 (https://issues.apache.org/jira/browse/LOG4J2-2649), the reporter said some reason about using graalvm to static compile.private static StringMapEMPTY_STRING_MAPprivate static java.lang.reflect.Constructor<?>INITIAL_CAPACITY_CONSTRUCTOR
-
Constructor Summary
Constructors Constructor Description ContextDataFactory()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static java.lang.Class<? extends StringMap>createCachedClass(java.lang.String className)static StringMapcreateContextData()static StringMapcreateContextData(int initialCapacity)static StringMapcreateContextData(java.util.Map<java.lang.String,java.lang.String> context)static StringMapcreateContextData(ReadOnlyStringMap readOnlyStringMap)private static java.lang.reflect.Constructor<?>createDefaultConstructor(java.lang.Class<? extends StringMap> cachedClass)private static java.lang.reflect.Constructor<?>createInitialCapacityConstructor(java.lang.Class<? extends StringMap> cachedClass)static StringMapemptyFrozenContextData()An empty pre-frozen IndexedStringMap.
-
-
-
Field Detail
-
CLASS_NAME
private static final java.lang.String CLASS_NAME
-
CACHED_CLASS
private static final java.lang.Class<? extends StringMap> CACHED_CLASS
-
DEFAULT_CONSTRUCTOR
private static final java.lang.reflect.Constructor<?> DEFAULT_CONSTRUCTOR
In LOG4J2-2649 (https://issues.apache.org/jira/browse/LOG4J2-2649), the reporter said some reason about using graalvm to static compile. In graalvm doc (https://github.com/oracle/graal/blob/master/substratevm/LIMITATIONS.md), graalvm is not support MethodHandle now, so the Constructor need not to return MethodHandle.
-
INITIAL_CAPACITY_CONSTRUCTOR
private static final java.lang.reflect.Constructor<?> INITIAL_CAPACITY_CONSTRUCTOR
-
EMPTY_STRING_MAP
private static final StringMap EMPTY_STRING_MAP
-
-
Method Detail
-
createCachedClass
private static java.lang.Class<? extends StringMap> createCachedClass(java.lang.String className)
-
createDefaultConstructor
private static java.lang.reflect.Constructor<?> createDefaultConstructor(java.lang.Class<? extends StringMap> cachedClass)
-
createInitialCapacityConstructor
private static java.lang.reflect.Constructor<?> createInitialCapacityConstructor(java.lang.Class<? extends StringMap> cachedClass)
-
createContextData
public static StringMap createContextData()
-
createContextData
public static StringMap createContextData(int initialCapacity)
-
createContextData
public static StringMap createContextData(java.util.Map<java.lang.String,java.lang.String> context)
-
createContextData
public static StringMap createContextData(ReadOnlyStringMap readOnlyStringMap)
-
emptyFrozenContextData
public static StringMap emptyFrozenContextData()
An empty pre-frozen IndexedStringMap. The returned object may be shared.- Returns:
- an empty pre-frozen IndexedStringMap
-
-