Class DynamicLevelManager
java.lang.Object
cloud.opencode.base.log.level.DynamicLevelManager
Dynamic Level Manager - Runtime log level override management
动态级别管理器 - 运行时日志级别覆盖管理
Singleton that manages runtime log level overrides per logger name, enabling dynamic adjustment of logging verbosity without application restart.
单例模式,按日志记录器名称管理运行时日志级别覆盖, 支持在不重启应用的情况下动态调整日志详细程度。
Features | 主要功能:
- Per-logger level overrides - 按日志记录器覆盖级别
- Effective level resolution with default fallback - 有效级别解析,带默认回退
- Thread-safe concurrent access - 线程安全的并发访问
- Bulk reset capability - 批量重置功能
- Lazy singleton initialization - 延迟单例初始化
Usage Examples | 使用示例:
DynamicLevelManager manager = DynamicLevelManager.getInstance();
// Set a level override for a specific logger
manager.setLevel("com.example.MyService", LogLevel.DEBUG);
// Get effective level (override or default)
LogLevel effective = manager.getEffectiveLevel("com.example.MyService", LogLevel.INFO);
// Returns DEBUG (override exists)
// Reset a specific override
manager.resetLevel("com.example.MyService");
// Reset all overrides
manager.resetAll();
Security | 安全性:
- Thread-safe: Yes (ConcurrentHashMap-based) - 线程安全: 是(基于 ConcurrentHashMap)
- Null-safe: No (logger name and level must not be null) - 空值安全: 否(日志记录器名称和级别不能为 null)
- Since:
- JDK 25, opencode-base-log V1.0.3
- Author:
- Leon Soo www.LeonSoo.com
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionReturns an unmodifiable copy of all current log level overrides.getEffectiveLevel(String loggerName, LogLevel defaultLevel) Gets the effective log level for the specified logger name.static DynamicLevelManagerReturns the singleton instance of DynamicLevelManager.Gets the log level override for the specified logger name.intReturns the number of active log level overrides.booleanhasOverride(String loggerName) Checks if a log level override exists for the specified logger name.voidresetAll()Clears all log level overrides.voidresetLevel(String loggerName) Removes the log level override for the specified logger name.voidSets a log level override for the specified logger name.
-
Method Details
-
getInstance
Returns the singleton instance of DynamicLevelManager. 返回 DynamicLevelManager 的单例实例。Uses the initialization-on-demand holder idiom for lazy, thread-safe singleton initialization without synchronization.
使用按需初始化持有者惯用法实现延迟、线程安全的单例初始化,无需同步。
- Returns:
- the singleton instance - 单例实例
-
setLevel
Sets a log level override for the specified logger name. 为指定的日志记录器名称设置日志级别覆盖。- Parameters:
loggerName- the logger name - 日志记录器名称level- the log level override - 日志级别覆盖- Throws:
NullPointerException- if loggerName or level is null - 如果日志记录器名称或级别为 null
-
getLevel
Gets the log level override for the specified logger name. 获取指定日志记录器名称的日志级别覆盖。- Parameters:
loggerName- the logger name - 日志记录器名称- Returns:
- the log level override, or null if not set - 日志级别覆盖,如果未设置则为 null
- Throws:
NullPointerException- if loggerName is null - 如果日志记录器名称为 null
-
getEffectiveLevel
Gets the effective log level for the specified logger name. 获取指定日志记录器名称的有效日志级别。Returns the override level if set, otherwise returns the default level.
如果设置了覆盖级别则返回覆盖级别,否则返回默认级别。
- Parameters:
loggerName- the logger name - 日志记录器名称defaultLevel- the default level to use if no override exists - 如果没有覆盖则使用的默认级别- Returns:
- the effective log level - 有效日志级别
- Throws:
NullPointerException- if loggerName or defaultLevel is null - 如果日志记录器名称或默认级别为 null
-
resetLevel
Removes the log level override for the specified logger name. 移除指定日志记录器名称的日志级别覆盖。- Parameters:
loggerName- the logger name - 日志记录器名称- Throws:
NullPointerException- if loggerName is null - 如果日志记录器名称为 null
-
resetAll
public void resetAll()Clears all log level overrides. 清除所有日志级别覆盖。 -
getAllLevels
-
hasOverride
Checks if a log level override exists for the specified logger name. 检查指定日志记录器名称是否存在日志级别覆盖。- Parameters:
loggerName- the logger name - 日志记录器名称- Returns:
- true if an override exists - 如果存在覆盖则返回 true
- Throws:
NullPointerException- if loggerName is null - 如果日志记录器名称为 null
-
getOverrideCount
public int getOverrideCount()Returns the number of active log level overrides. 返回活跃的日志级别覆盖数量。- Returns:
- the number of overrides - 覆盖数量
-