UNPKG

legal-markdown-js

Version:

Node.js implementation of LegalMarkdown for processing legal documents with markdown and YAML - Complete feature parity with Ruby version

215 lines 6.43 kB
/** * @fileoverview Pipeline Logging System for Legal Markdown Processing * * This module provides comprehensive logging capabilities for the Legal Markdown * processing pipeline. It supports multiple logging levels, structured output, * performance metrics, and integration with external monitoring systems. * * Features: * - Structured logging with consistent format * - Performance metrics and timing * - Debug output with step-by-step visibility * - Error tracking and reporting * - Configurable log levels and outputs * - Integration with pipeline events * - Memory usage tracking * - Field tracking logging * * @example * ```typescript * import { PipelineLogger, ConsolePipelineLogger } from './pipeline-logger'; * * const logger = new ConsolePipelineLogger({ * level: 'debug', * enableMetrics: true, * enableColors: true * }); * * logger.startPipeline({ steps: [], fieldTrackingMode: 'centralized' }); * logger.startStep('mixins', 1500); * logger.completeStep('mixins', stepResult); * logger.completePipeline(pipelineResult); * ``` */ import { PipelineConfig, PipelineResult, StepResult, ProcessingError } from './types'; /** * Log level enumeration for controlling output verbosity * * @enum {string} LogLevel */ export declare enum LogLevel { ERROR = "error", WARN = "warn", INFO = "info", DEBUG = "debug", TRACE = "trace" } /** * Configuration options for pipeline loggers * * @interface PipelineLoggerConfig * @example * ```typescript * const config: PipelineLoggerConfig = { * level: LogLevel.DEBUG, * enableMetrics: true, * enableColors: true, * enableTimestamps: true, * prefix: '[LEGAL-MD]', * outputFormat: 'structured' * }; * ``` */ export interface PipelineLoggerConfig { /** Minimum log level to output */ level?: LogLevel; /** Whether to enable performance metrics collection */ enableMetrics?: boolean; /** Whether to use colors in console output */ enableColors?: boolean; /** Whether to include timestamps in log messages */ enableTimestamps?: boolean; /** Prefix for all log messages */ prefix?: string; /** Output format style */ outputFormat?: 'simple' | 'structured' | 'json'; /** Whether to track memory usage */ enableMemoryTracking?: boolean; } /** * Base interface for pipeline logging systems * * @interface PipelineLogger * @example * ```typescript * class CustomLogger implements PipelineLogger { * startPipeline(config: PipelineConfig): void { * this.log('info', 'Pipeline starting with config', config); * } * * startStep(stepName: string, inputSize: number): void { * this.log('debug', `Step ${stepName} starting`, { inputSize }); * } * } * ``` */ export interface PipelineLogger { /** * Called when pipeline execution begins * * @param config - Pipeline configuration */ startPipeline(config: PipelineConfig): void; /** * Called when a step begins execution * * @param stepName - Name of the step starting * @param inputSize - Size of input content in characters */ startStep(stepName: string, inputSize: number): void; /** * Called when a step completes successfully * * @param stepName - Name of the completed step * @param result - Step execution result */ completeStep(stepName: string, result: StepResult): void; /** * Called when a step is skipped * * @param stepName - Name of the skipped step * @param reason - Reason for skipping */ skipStep(stepName: string, reason: string): void; /** * Called when a step encounters an error * * @param stepName - Name of the failed step * @param error - Error that occurred */ errorStep(stepName: string, error: ProcessingError): void; /** * Called when the entire pipeline completes * * @param result - Complete pipeline result */ completePipeline(result: PipelineResult): void; /** * Called when the pipeline fails critically * * @param error - Critical error that caused failure */ errorPipeline(error: ProcessingError): void; /** * Log field tracking information * * @param fieldName - Name of the field * @param action - Action performed on the field * @param metadata - Additional field metadata */ logFieldTracking(fieldName: string, action: string, metadata?: Record<string, any>): void; /** * Generate a complete pipeline execution report * * @returns Formatted report string */ generateReport(): string; } /** * Console-based pipeline logger with rich formatting * * @class ConsolePipelineLogger * @example * ```typescript * const logger = new ConsolePipelineLogger({ * level: LogLevel.DEBUG, * enableColors: true, * enableMetrics: true * }); * * // Use with pipeline manager * const pipeline = new PipelineManager(logger); * ``` */ export declare class ConsolePipelineLogger implements PipelineLogger { private config; private startTime; private stepTimings; private metrics; constructor(config?: PipelineLoggerConfig); startPipeline(config: PipelineConfig): void; startStep(stepName: string, inputSize: number): void; completeStep(stepName: string, result: StepResult): void; skipStep(stepName: string, reason: string): void; errorStep(stepName: string, error: ProcessingError): void; completePipeline(result: PipelineResult): void; errorPipeline(error: ProcessingError): void; logFieldTracking(fieldName: string, action: string, metadata?: Record<string, any>): void; generateReport(): string; private resetMetrics; private shouldLog; private log; private colorizeLevel; private formatBytes; private formatSizeChange; private getMemoryUsage; private trackMemoryUsage; private logMetricsSummary; } /** * Null logger that discards all log messages (useful for testing) * * @class NullPipelineLogger */ export declare class NullPipelineLogger implements PipelineLogger { startPipeline(): void; startStep(): void; completeStep(): void; skipStep(): void; errorStep(): void; completePipeline(): void; errorPipeline(): void; logFieldTracking(): void; generateReport(): string; } //# sourceMappingURL=pipeline-logger.d.ts.map