81 lines
No EOL
2.8 KiB
TypeScript
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; |