Class ContextDataFactory


  • public class ContextDataFactory
    extends java.lang.Object
    Factory 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 SortedArrayStringMap objects. Can be configured by setting system property "log4j2.ContextData" to the fully qualified class name of a class implementing the StringMap interface. The class must have a public default constructor, and if possible should also have a public constructor that takes a single int argument for the initial capacity.

    Since:
    2.7
    See Also:
    LogEvent.getContextData(), ContextDataInjector, SortedArrayStringMap
    • 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
    • Constructor Detail

      • ContextDataFactory

        public ContextDataFactory()
    • 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)
      • emptyFrozenContextData

        public static StringMap emptyFrozenContextData()
        An empty pre-frozen IndexedStringMap. The returned object may be shared.
        Returns:
        an empty pre-frozen IndexedStringMap