UNPKG

lever-ui-logger

Version:

Zero-dependency logging library with optional EventBus integration. Built-in PII redaction, multiple transports, and comprehensive logging capabilities.

165 lines 4.49 kB
/** * Logger Configuration Management Component * * Centralized configuration management for the logger system, handling * level management, component-specific overrides, sampling rates, and * configuration validation. Provides a clean API for configuration updates * with proper immutability and change tracking. * * @example * ```typescript * import { LoggerConfiguration } from './logger-configuration'; * * const config = new LoggerConfiguration({ * level: 'debug', * component: 'user-service', * sampling: { debug: 0.1 } * }); * * // Check if a log should be processed * if (config.shouldProcess('debug')) { * // Log the message * } * * // Update configuration * config.setLevel('warn'); * config.setComponentLevel('database', 'trace'); * ``` */ import type { LogLevel, LoggerConfig, Transport } from './types.js'; /** * Configuration management for logger instances */ export declare class LoggerConfiguration { private config; private componentLevels; private readonly originalConfig; /** * Creates a new configuration manager * * @param userConfig - User-provided configuration */ constructor(userConfig?: LoggerConfig); /** * Get the current log level */ get level(): LogLevel; /** * Get the component name */ get component(): string; /** * Get the default context */ get defaultContext(): Record<string, unknown>; /** * Get the sampling configuration */ get sampling(): Partial<Record<LogLevel, number>>; /** * Get the redaction configuration */ get redaction(): Required<LoggerConfig>['redaction']; /** * Get the transports configuration */ get transports(): Transport[]; /** * Get capture settings */ get captureSettings(): { unhandledErrors: boolean; unhandledRejections: boolean; consoleErrors: boolean; }; /** * Get the full configuration object (frozen copy) */ get fullConfig(): Readonly<Required<LoggerConfig>>; /** * Set the minimum log level * * @param level - New log level */ setLevel(level: LogLevel): void; /** * Set log level for a specific component * * @param component - Component name * @param level - Log level for this component */ setComponentLevel(component: string, level: LogLevel): void; /** * Remove component-specific log level * * @param component - Component name * @returns True if component level was removed */ removeComponentLevel(component: string): boolean; /** * Get effective log level for a component * * @param component - Component name (optional) * @returns Effective log level */ getEffectiveLevel(component?: string): LogLevel; /** * Check if a log should be processed based on level and sampling * * @param level - Log level to check * @param component - Optional component name for component-specific levels * @returns True if log should be processed */ shouldProcess(level: LogLevel, component?: string): boolean; /** * Update sampling rate for a specific level * * @param level - Log level * @param rate - Sampling rate (0-1) */ setSamplingRate(level: LogLevel, rate: number): void; /** * Update default context * * @param context - New context to merge with existing */ updateDefaultContext(context: Record<string, unknown>): void; /** * Clear all component-specific log levels */ clearComponentLevels(): void; /** * Get all component-specific log levels */ getComponentLevels(): Map<string, LogLevel>; /** * Reset configuration to original values */ reset(): void; /** * Clone this configuration * * @param overrides - Optional configuration overrides * @returns New LoggerConfiguration instance */ clone(overrides?: Partial<LoggerConfig>): LoggerConfiguration; /** * Merge user configuration with defaults * * @private */ private mergeConfig; /** * Check if a log level should be processed * * @private */ private shouldLog; /** * Apply sampling to determine if log should be processed * * @private */ private passesSampling; } //# sourceMappingURL=logger-configuration.d.ts.map