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
TypeScript
/**
* 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