/** * Log level detector using regex pattern matching. * * Detects log levels from text using multiple strategies: * - Emoji indicators: ℹ️ INFO, ⚠️ WARN, ❌ ERROR * - Bracketed formats: [INFO], (WARN), * - Uppercase keywords: INFO, WARN, ERROR * - Framework-specific: pino, winston, bunyan * * @module components/devenv/terminal/parsing/levels/detector */ import type { TLogLevel } from '../LogParser.types'; import type { ILogLevelDetection, ILogLevelDetectorOptions, ILogLevelPattern } from './LogLevel.types'; /** * Log level detector class. * * Detects log levels from text using pattern matching with * confidence scoring. Supports custom patterns and configurable * detection strategies. * * @example * ```ts * const detector = new LogLevelDetector(); * const result = detector.detect('21:35:28.944 ℹ️ INFO ⦗COMPONENT⦘ Message'); * // { level: 'info', confidence: 0.9, matched: 'INFO', position: 12 } * ``` */ export declare class LogLevelDetector { /** Combined patterns from defaults and custom additions */ private patterns; /** Detection options */ private options; /** * Create a new log level detector. * * @param options - Detection options */ constructor(options?: ILogLevelDetectorOptions); /** * Detect log level from text string. * * Scans text for log level patterns and returns the detection * with highest confidence score. * * @param text - Text to analyze * @returns Detection result or level 'unknown' with low confidence * * @example * ```ts * const result = detector.detect('[INFO] Server started'); * // { level: 'info', confidence: 0.9, matched: '[INFO]', position: 0 } * ``` */ detect(text: string): ILogLevelDetection; /** * Detect log level with default fallback. * * Returns 'info' as default level instead of 'unknown' for * logs without a clear level indicator. * * @param text - Text to analyze * @returns Detected level (defaults to 'info' if unknown) */ detectOrDefault(text: string): TLogLevel; /** * Add a custom pattern for a log level. * * @param pattern - Pattern to add * * @example * ```ts * detector.addPattern({ * regex: /\[CUSTOM\]/i, * level: 'info', * confidence: 0.9 * }); * ``` */ addPattern(pattern: ILogLevelPattern): void; /** * Remove pattern for a level. * * Removes all patterns matching the given regex for the specified * log level. * * @param level - Log level * @param regex - Regex pattern to remove * @returns true if pattern was found and removed */ removePattern(level: TLogLevel, regex: RegExp): boolean; /** * Get all patterns for a log level. * * @param level - Log level * @returns Array of patterns for the level */ getPatterns(level: TLogLevel): ILogLevelPattern[]; /** * Clear all custom patterns. * * Removes all custom patterns and resets to defaults. */ clearCustomPatterns(): void; /** * Detect log level from multiple lines and return consensus. * * Useful for determining the overall level of a multiline * log entry or buffer. * * @param lines - Array of text lines * @returns Consensus level with aggregated confidence */ detectFromLines(lines: string[]): ILogLevelDetection; /** * Check if text contains a specific log level. * * @param text - Text to check * @param level - Log level to look for * @returns true if level is detected with minimum confidence */ hasLevel(text: string, level: TLogLevel): boolean; /** * Get severity score for a log level. * * Returns numeric severity (0-6) for comparison and filtering. * * @param level - Log level * @returns Severity score (0=trace, 6=fatal) */ static getSeverity(level: TLogLevel): number; /** * Compare two log levels by severity. * * @param level1 - First log level * @param level2 - Second log level * @returns Negative if level1 < level2, positive if level1 > level2, 0 if equal */ static compareSeverity(level1: TLogLevel, level2: TLogLevel): number; } //# sourceMappingURL=LogLevelDetector.d.ts.map