import { LogLevel } from '../types'; /** * Runtime configuration for the logger package * This interface defines the structure of the logger.config.* files */ export interface LoggerRuntimeConfig { /** * Global log level for the logger * @default "info" */ level?: LogLevel | keyof typeof LogLevel | string; /** * Enable correlation tracking across async operations * @default true */ enableCorrelation?: boolean; /** * Enable data sanitization for sensitive fields * @default true */ sanitize?: boolean; /** * Fields to sanitize (will be redacted in logs) * @default ["password", "token", "secret", "key", "authorization", "cookie", "apiKey", "accessToken", "refreshToken", "creditCard", "ssn", "socialSecurityNumber"] */ sanitizeFields?: string[]; /** * Service context information */ context?: { /** * Service name * @default "unknown-service" */ service?: string; /** * Service version * @default "0.0.0" */ version?: string; /** * Environment (dev, staging, prod, etc.) * @default process.env.NODE_ENV || "development" */ environment?: string; /** * Server hostname * @default process.env.HOSTNAME || "localhost" */ hostname?: string; /** * Process ID * @default process.pid */ pid?: number; /** * Thread identifier */ thread?: string; /** * Additional context fields */ [key: string]: any; }; /** * Console transport configuration */ console?: { /** * Enable console transport * @default true */ enabled?: boolean; /** * Console log level * @default "debug" */ level?: LogLevel | keyof typeof LogLevel | string; /** * Formatter type * @default "text" */ formatter?: 'text' | 'json' | 'structured'; /** * Formatter options */ formatterOptions?: { /** * Pretty print JSON (for json formatter) * @default false */ prettyPrint?: boolean; /** * JSON indentation spaces (for json formatter) * @default 2 */ space?: number; /** * Include stack traces (for text formatter) * @default true */ includeStack?: boolean; /** * Colorize output (for text formatter) * @default true */ colorize?: boolean; /** * Date format (for text formatter) * @default "ISO" */ dateFormat?: string; /** * Prefix for structured formatter * @default "" */ prefix?: string; /** * Delimiter for structured formatter * @default " " */ delimiter?: string; /** * Include timestamp (for structured formatter) * @default true */ includeTimestamp?: boolean; /** * Include hostname (for structured formatter) * @default true */ includeHostname?: boolean; }; }; /** * File transport configuration */ file?: { /** * Enable file transport * @default false */ enabled?: boolean; /** * Log file path * @default "logs/app.log" */ filename?: string; /** * File log level * @default "info" */ level?: LogLevel | keyof typeof LogLevel | string; /** * Formatter type * @default "json" */ formatter?: 'text' | 'json' | 'structured'; /** * Maximum file size before rotation (bytes) * @default 10485760 (10MB) */ maxSize?: number; /** * Maximum number of rotated files to keep * @default 5 */ maxFiles?: number; /** * Create directory if it doesn't exist * @default true */ createDir?: boolean; /** * Formatter options (same as console) */ formatterOptions?: { prettyPrint?: boolean; space?: number; includeStack?: boolean; colorize?: boolean; dateFormat?: string; prefix?: string; delimiter?: string; includeTimestamp?: boolean; includeHostname?: boolean; }; }; /** * HTTP transport configuration */ http?: { /** * Enable HTTP transport * @default false */ enabled?: boolean; /** * HTTP endpoint URL * @required if enabled */ url?: string; /** * HTTP log level * @default "warn" */ level?: LogLevel | keyof typeof LogLevel | string; /** * HTTP headers */ headers?: Record; /** * Request timeout (ms) * @default 30000 */ timeout?: number; /** * Batch size for sending logs * @default 100 */ batchSize?: number; /** * Flush interval (ms) * @default 5000 */ flushInterval?: number; /** * Number of retries on failure * @default 3 */ retries?: number; }; /** * Database transport configuration */ database?: { /** * Enable database transport * @default false */ enabled?: boolean; /** * Database connection string * @required if enabled */ connectionString?: string; /** * Database table name * @default "logs" */ tableName?: string; /** * Database log level * @default "error" */ level?: LogLevel | keyof typeof LogLevel | string; /** * Maximum connection pool size * @default 10 */ maxPoolSize?: number; }; /** * Error handling configuration */ errorHandling?: { /** * Enable error callback * @default false */ enableCallback?: boolean; /** * Log transport failures to console * @default true */ logFailures?: boolean; }; } /** * Environment variable mappings for logger configuration */ export interface LoggerEnvMappings { LOGGER_LEVEL?: string; LOGGER_ENABLE_CORRELATION?: string; LOGGER_SANITIZE?: string; LOGGER_SANITIZE_FIELDS?: string; LOGGER_SERVICE?: string; LOGGER_VERSION?: string; LOGGER_ENVIRONMENT?: string; LOGGER_HOSTNAME?: string; LOGGER_CONSOLE_ENABLED?: string; LOGGER_CONSOLE_LEVEL?: string; LOGGER_FILE_ENABLED?: string; LOGGER_FILE_FILENAME?: string; LOGGER_FILE_LEVEL?: string; LOGGER_HTTP_ENABLED?: string; LOGGER_HTTP_URL?: string; LOGGER_HTTP_LEVEL?: string; LOGGER_DATABASE_ENABLED?: string; LOGGER_DATABASE_CONNECTION_STRING?: string; LOGGER_DATABASE_TABLE_NAME?: string; LOGGER_DATABASE_LEVEL?: string; } /** * Resolved configuration after merging defaults, config file, and environment variables */ export interface ResolvedLoggerConfig { level: LogLevel; enableCorrelation: boolean; sanitize: boolean; sanitizeFields: string[]; context: { service: string; version: string; environment: string; hostname: string; pid: number; thread?: string | undefined; [key: string]: any; }; transports: { console?: { enabled: boolean; level: LogLevel; formatter: string; formatterOptions?: any; } | undefined; file?: { enabled: boolean; filename: string; level: LogLevel; formatter: string; formatterOptions?: any; maxSize: number; maxFiles: number; createDir: boolean; } | undefined; http?: { enabled: boolean; url: string; level: LogLevel; headers: Record; timeout: number; batchSize: number; flushInterval: number; retries: number; } | undefined; database?: { enabled: boolean; connectionString: string; tableName: string; level: LogLevel; maxPoolSize: number; } | undefined; }; errorHandling: { enableCallback: boolean; logFailures: boolean; }; } //# sourceMappingURL=types.d.ts.map