/** * Logging configuration using envalid * Application logging settings without Loki (Loki config is in monitoring.ts) */ import { cleanEnv, str, bool, num } from 'envalid'; /** * Logging configuration with validation and defaults */ export const loggingConfig = cleanEnv(process.env, { // Basic Logging Settings LOG_LEVEL: str({ default: 'info', choices: ['error', 'warn', 'info', 'http', 'verbose', 'debug', 'silly'], desc: 'Logging level' }), LOG_FORMAT: str({ default: 'json', choices: ['json', 'simple', 'combined'], desc: 'Log output format' }), LOG_CONSOLE: bool({ default: true, desc: 'Enable console logging' }), LOG_FILE: bool({ default: false, desc: 'Enable file logging' }), // File Logging Settings LOG_FILE_PATH: str({ default: 'logs', desc: 'Log file directory path' }), LOG_FILE_MAX_SIZE: str({ default: '20m', desc: 'Maximum log file size' }), LOG_FILE_MAX_FILES: num({ default: 14, desc: 'Maximum number of log files to keep' }), LOG_FILE_DATE_PATTERN: str({ default: 'YYYY-MM-DD', desc: 'Log file date pattern' }), // Error Logging LOG_ERROR_FILE: bool({ default: true, desc: 'Enable separate error log file' }), LOG_ERROR_STACK: bool({ default: true, desc: 'Include stack traces in error logs' }), // Performance Logging LOG_PERFORMANCE: bool({ default: false, desc: 'Enable performance logging' }), LOG_SQL_QUERIES: bool({ default: false, desc: 'Log SQL queries' }), LOG_HTTP_REQUESTS: bool({ default: true, desc: 'Log HTTP requests' }), // Structured Logging LOG_STRUCTURED: bool({ default: true, desc: 'Use structured logging format' }), LOG_TIMESTAMP: bool({ default: true, desc: 'Include timestamps in logs' }), LOG_CALLER_INFO: bool({ default: false, desc: 'Include caller information in logs' }), // Log Filtering LOG_SILENT_MODULES: str({ default: '', desc: 'Comma-separated list of modules to silence' }), LOG_VERBOSE_MODULES: str({ default: '', desc: 'Comma-separated list of modules for verbose logging' }), // Application Context LOG_SERVICE_NAME: str({ default: 'stock-bot', desc: 'Service name for log context' }), LOG_SERVICE_VERSION: str({ default: '1.0.0', desc: 'Service version for log context' }), LOG_ENVIRONMENT: str({ default: 'development', desc: 'Environment for log context' }), }); // Export typed configuration object export type LoggingConfig = typeof loggingConfig; // Export individual config values for convenience export const { LOG_LEVEL, LOG_FORMAT, LOG_CONSOLE, LOG_FILE, LOG_FILE_PATH, LOG_FILE_MAX_SIZE, LOG_FILE_MAX_FILES, LOG_FILE_DATE_PATTERN, LOG_ERROR_FILE, LOG_ERROR_STACK, LOG_PERFORMANCE, LOG_SQL_QUERIES, LOG_HTTP_REQUESTS, LOG_STRUCTURED, LOG_TIMESTAMP, LOG_CALLER_INFO, LOG_SILENT_MODULES, LOG_VERBOSE_MODULES, LOG_SERVICE_NAME, LOG_SERVICE_VERSION, LOG_ENVIRONMENT, } = loggingConfig;