UNPKG

@bernierllc/logging

Version:

A comprehensive logging package with Winston integration for audit and system logging

440 lines 12.1 kB
import { LogLevel } from '../mocks/coreLogger'; /** * Runtime configuration for the service logging package * This extends the core logger configuration with service-specific options */ export interface ServiceLoggingRuntimeConfig { /** * Global log level for the service 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 "service-logging" */ service?: string; /** * Service version * @default "0.1.12" */ 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; }; /** * System logging configuration */ system?: { /** * Enable system logging * @default true */ enabled?: boolean; /** * System log level * @default "info" */ level?: LogLevel | keyof typeof LogLevel | string; /** * Console transport configuration */ console?: { /** * Enable console transport for system logs * @default true in development, false in production */ enabled?: boolean; /** * Console log level * @default "debug" */ level?: LogLevel | keyof typeof LogLevel | string; /** * Formatter type * @default "text" */ formatter?: 'text' | 'json' | 'structured'; /** * Formatter options */ formatterOptions?: { prettyPrint?: boolean; space?: number; includeStack?: boolean; colorize?: boolean; dateFormat?: string; prefix?: string; delimiter?: string; includeTimestamp?: boolean; includeHostname?: boolean; }; }; /** * File transport configuration */ file?: { /** * Enable file transport for system logs * @default false in development, true in production */ enabled?: boolean; /** * Log file path * @default "logs/system.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 */ 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 for system logs * @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<string, string>; /** * 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; }; }; /** * Audit logging configuration */ audit?: { /** * Enable audit logging * @default true */ enabled?: boolean; /** * Audit log level * @default "info" */ level?: LogLevel | keyof typeof LogLevel | string; /** * Console transport configuration for audit logs */ console?: { /** * Enable console transport for audit logs * @default false */ enabled?: boolean; /** * Console log level * @default "info" */ level?: LogLevel | keyof typeof LogLevel | string; /** * Formatter type * @default "json" */ formatter?: 'text' | 'json' | 'structured'; /** * Formatter options */ formatterOptions?: { prettyPrint?: boolean; space?: number; includeStack?: boolean; colorize?: boolean; dateFormat?: string; prefix?: string; delimiter?: string; includeTimestamp?: boolean; includeHostname?: boolean; }; }; /** * File transport configuration for audit logs */ file?: { /** * Enable file transport for audit logs * @default true */ enabled?: boolean; /** * Log file path * @default "logs/audit.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 */ formatterOptions?: { prettyPrint?: boolean; space?: number; includeStack?: boolean; colorize?: boolean; dateFormat?: string; prefix?: string; delimiter?: string; includeTimestamp?: boolean; includeHostname?: boolean; }; }; /** * Database transport configuration for audit logs */ database?: { /** * Enable database transport for audit logs * @default false */ enabled?: boolean; /** * Database connection string * @required if enabled */ connectionString?: string; /** * Database table name * @default "audit_logs" */ tableName?: string; /** * Database log level * @default "info" */ level?: LogLevel | keyof typeof LogLevel | string; /** * Maximum connection pool size * @default 10 */ maxPoolSize?: number; }; }; /** * Error handling configuration */ errorHandling?: { /** * Enable error callback for transport failures * @default false */ enableCallback?: boolean; /** * Log transport failures to console * @default true */ logFailures?: boolean; }; } /** * Resolved configuration after merging defaults, config file, and environment variables */ export interface ResolvedServiceLoggingConfig { 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; }; system: { enabled: boolean; level: LogLevel; console?: { enabled: boolean; level: LogLevel; formatter: string; formatterOptions?: any; }; file?: { enabled: boolean; filename: string; level: LogLevel; formatter: string; formatterOptions?: any; maxSize: number; maxFiles: number; createDir: boolean; }; http?: { enabled: boolean; url: string; level: LogLevel; headers: Record<string, string>; timeout: number; batchSize: number; flushInterval: number; retries: number; }; }; audit: { enabled: boolean; level: LogLevel; console?: { enabled: boolean; level: LogLevel; formatter: string; formatterOptions?: any; }; file?: { enabled: boolean; filename: string; level: LogLevel; formatter: string; formatterOptions?: any; maxSize: number; maxFiles: number; createDir: boolean; }; database?: { enabled: boolean; connectionString: string; tableName: string; level: LogLevel; maxPoolSize: number; }; }; errorHandling: { enableCallback: boolean; logFailures: boolean; }; } //# sourceMappingURL=types.d.ts.map