stock-bot/libs/config/src/logging.ts

81 lines
No EOL
2.8 KiB
TypeScript

/**
* 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;