Class InternalLoggerRegistry
- java.lang.Object
-
- org.apache.logging.log4j.core.util.internal.InternalLoggerRegistry
-
@NullMarked public final class InternalLoggerRegistry extends java.lang.ObjectA registry ofLoggers namespaced by name and message factory. This class is internally used byLoggerContext.We don't use the registry from Log4j API to keep Log4j Core independent from the version of Log4j API at runtime. This also allows Log4j Core to evolve independently from Log4j API.
- Since:
- 2.25.0
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.concurrent.locks.ReadWriteLocklockprivate java.util.Map<MessageFactory,java.util.Map<java.lang.String,java.lang.ref.WeakReference<Logger>>>loggerRefByNameByMessageFactoryprivate java.util.concurrent.locks.LockreadLockprivate java.lang.ref.ReferenceQueue<Logger>staleLoggerRefsprivate java.util.concurrent.locks.LockwriteLock
-
Constructor Summary
Constructors Constructor Description InternalLoggerRegistry()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description LoggercomputeIfAbsent(java.lang.String name, MessageFactory messageFactory, java.util.function.BiFunction<java.lang.String,MessageFactory,Logger> loggerSupplier)private voidexpungeStaleEntries()Expunges stale entries for logger references and message factories.@Nullable LoggergetLogger(java.lang.String name, MessageFactory messageFactory)Returns the logger associated with the given name and message factory.java.util.Collection<Logger>getLoggers()booleanhasLogger(java.lang.String name, java.lang.Class<? extends MessageFactory> messageFactoryClass)Checks if a logger associated with the given name and message factory type exists.booleanhasLogger(java.lang.String name, MessageFactory messageFactory)Checks if a logger associated with the given name and message factory exists.
-
-
-
Field Detail
-
loggerRefByNameByMessageFactory
private final java.util.Map<MessageFactory,java.util.Map<java.lang.String,java.lang.ref.WeakReference<Logger>>> loggerRefByNameByMessageFactory
-
lock
private final java.util.concurrent.locks.ReadWriteLock lock
-
readLock
private final java.util.concurrent.locks.Lock readLock
-
writeLock
private final java.util.concurrent.locks.Lock writeLock
-
staleLoggerRefs
private final java.lang.ref.ReferenceQueue<Logger> staleLoggerRefs
-
-
Method Detail
-
expungeStaleEntries
private void expungeStaleEntries()
Expunges stale entries for logger references and message factories.
-
getLogger
public @Nullable Logger getLogger(java.lang.String name, MessageFactory messageFactory)
Returns the logger associated with the given name and message factory.- Parameters:
name- a logger namemessageFactory- a message factory- Returns:
- the logger associated with the given name and message factory
-
getLoggers
public java.util.Collection<Logger> getLoggers()
-
hasLogger
public boolean hasLogger(java.lang.String name, MessageFactory messageFactory)Checks if a logger associated with the given name and message factory exists.- Parameters:
name- a logger namemessageFactory- a message factory- Returns:
true, if the logger exists;falseotherwise.
-
hasLogger
public boolean hasLogger(java.lang.String name, java.lang.Class<? extends MessageFactory> messageFactoryClass)Checks if a logger associated with the given name and message factory type exists.- Parameters:
name- a logger namemessageFactoryClass- a message factory class- Returns:
true, if the logger exists;falseotherwise.
-
computeIfAbsent
public Logger computeIfAbsent(java.lang.String name, MessageFactory messageFactory, java.util.function.BiFunction<java.lang.String,MessageFactory,Logger> loggerSupplier)
-
-